AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi http upload aus einer "Form" heraus
Thema durchsuchen
Ansicht
Themen-Optionen

http upload aus einer "Form" heraus

Offene Frage von "noo.bee"
Ein Thema von noo.bee · begonnen am 21. Sep 2009 · letzter Beitrag vom 14. Okt 2009
Antwort Antwort
Seite 1 von 3  1 23      
noo.bee

Registriert seit: 13. Sep 2009
24 Beiträge
 
#1

http upload aus einer "Form" heraus

  Alt 21. Sep 2009, 13:49
also ich wollte mir für duckload.com n kleines proggie basteln, um via drag&drop meine sachen hochzuladen.
die anmeldung funktioniert schonmal bestens (danke an die helfer ). jedoch haut der upload nicht hin.

user: 123456123456
pass: 123456123456

Delphi-Quellcode:
procedure TForm1.uploadClick(Sender: TObject);
var
  MultiPartFormDataStream: TMsMultiPartFormDataStream;
  Response: String;
begin
   MultiPartFormDataStream := TMsMultiPartFormDataStream.Create; // Objekte instanzieren
  try
      // Content-Type bestimmen
      idhttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType;

      // Formular-Felder setzen, die keine Dateien sein sollen
      MultiPartFormDataStream.AddFormField('', '');
      // ...

      // Datei laden
      MultiPartFormDataStream.AddFile('upload', 'c:\clock.avi', '');

      // diese Methode muss _vor_ dem Senden augerufen werden
      MultiPartFormDataStream.PrepareStreamForDispatch;
      MultiPartFormDataStream.Position := 0;

      try
        // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
        Response := idhttp1.Post(s, MultiPartFormDataStream); // in der variablen 's' steht die url, wohin hochgeladen werden soll,da sich die url ändert

      except
        // Upload fehlgeschlagen, entsprechend reagieren
      end;
  finally
    MultiPartFormDataStream.Free;
  end;
end;
kann einer helfen und sagen, wo der fehler liegt ?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: http upload aus einer "Form" heraus

  Alt 21. Sep 2009, 13:55
Eine etwas ausführlichere Fehlerbeschreibung als "haut nicht hin" wäre bestimmt hilfreich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
noo.bee

Registriert seit: 13. Sep 2009
24 Beiträge
 
#3

Re: http upload aus einer "Form" heraus

  Alt 21. Sep 2009, 14:28
naja es kommt keine fehlermeldung oder sowas.
ich drücke meinen button fürs hochladen, dann geschieht der zugriff aufs inet (sagt meine firewall) und für n paar sek ist das proggie am arbeiten (der upload dauert nur wenige sekunden). aber wenn ich dann auf den account bei duckload.com schaue (user und passwort sind richtig eingetragen zum einloggen ), ist dort keine datei angekommen.
die url zum hochladen in der variable 's' wird geparsed mit Pos, PosEx und Copy, da sich diese immer ändert.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#4

Re: http upload aus einer "Form" heraus

  Alt 21. Sep 2009, 15:41
Cross-Post im DF: http://www.delphi-forum.de/viewtopic.php?t=94737
  Mit Zitat antworten Zitat
noo.bee

Registriert seit: 13. Sep 2009
24 Beiträge
 
#5

Re: http upload aus einer "Form" heraus

  Alt 21. Sep 2009, 15:54
danke
  Mit Zitat antworten Zitat
noo.bee

Registriert seit: 13. Sep 2009
24 Beiträge
 
#6

Re: http upload aus einer "Form" heraus

  Alt 22. Sep 2009, 11:57
ich poste mal den ganze code, vllt lässt sich das dann besser der fehler finden

Delphi-Quellcode:
unit duck1709;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, MsMultiPartFormData, IdCookieManager, StrUtils, pngimage, ExtCtrls,
  GIFImg;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    login: TButton;
    IdHTTP1: TIdHTTP;
    Edit2: TEdit;
    Memo1: TMemo;
    upload: TButton;
    IdCookieManager1: TIdCookieManager;
    storXX: TButton;
    Label1: TLabel;
    Edit3: TEdit;
    Image1: TImage;
    Label2: TLabel;
    Label3: TLabel;
    Image2: TImage;
    Image3: TImage;
    procedure loginClick(Sender: TObject);
    procedure uploadClick(Sender: TObject);
    procedure storXXClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  StringList, sl: TStringList;
  Edit3: TEdit;
  s: string;
implementation

{$R *.dfm}



procedure TForm1.loginClick(Sender: TObject);
begin
  StringList := TStringList.Create; //TStringList erstellen
  try
    StringList.Values['yl_name'] := '123456123456'; //Edit1.Text;
    StringList.Values['yl_pw'] := '123456123456'; //Edit2.Text;
    StringList.Values['yl_submit'] := 'Login';
    idhttp1.Post('http://duckload.com/index.php?Modul=Login', StringList);
    memo1.Lines.Text := idhttp1.Post('http://duckload.com/member/', StringList);
  finally
     StringList.Free; //Speicherfreigeben
end;
end;

////////////////////////////////////////////////////////////////

procedure TForm1.storXXClick(Sender: TObject);
var
  Position1, Position2: Integer;
begin
  s := idhttp1.Get('http://duckload.com/index.html');

  //sucht nach action=" und gibt die Position im String zurück,
  //wir erhalten die Position von a möchten aber wissen was zwsichen
  // " und " steht. Also zählen wir die Länge des Suchstrings dazu
  Position1 := pos('action="', s) +8;

  //wir suchen nach dem abschließenden ", ab unserer ersten Position,
  //könnten ja mehrere " im String sein...
  Position2 := PosEx(s, '"', Position1) - 1;

  //wir kopieren den Text zwischen unseren Positionen, Copy erwartet
  //aber nicht die Position des letzten Zeichen als dritten Parameter
  //sondern die Anzahl der zu kopieren zeichen, da darfst du jetzt mal selbst überlegen ;-)
  s := Copy(s, Position1, 48);
  edit3.Text := s; // Ausgabe des benutzten Stores

end;

////////////////////////////////////////////////////////////////

procedure TForm1.uploadClick(Sender: TObject);
var
  MultiPartFormDataStream: TMsMultiPartFormDataStream;
  Response: String;
begin
   MultiPartFormDataStream := TMsMultiPartFormDataStream.Create; // Objekte instanzieren
  try
      // Content-Type bestimmen
      idhttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType;

      // Formular-Felder setzen, die keine Dateien sein sollen
      MultiPartFormDataStream.AddFormField('', '');
      // ...

      // Datei laden
      MultiPartFormDataStream.AddFile('upload', 'clock.avi', 'multipart/form-data');

      // diese Methode muss _vor_ dem Senden augerufen werden
      MultiPartFormDataStream.PrepareStreamForDispatch;
      MultiPartFormDataStream.Position := 0;

      try
        // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
        Response := idhttp1.Post(s, MultiPartFormDataStream);

      except
        // Upload fehlgeschlagen, entsprechend reagieren
      end;
  finally
    MultiPartFormDataStream.Free;
  end;
end;

end.
  Mit Zitat antworten Zitat
noo.bee

Registriert seit: 13. Sep 2009
24 Beiträge
 
#7

Re: http upload aus einer "Form" heraus

  Alt 22. Sep 2009, 23:18
also ich hab mir mal die fehlerseite rückgeben lassen:
Code:
<html><head><title>Error</title><link rel='stylesheet'
href='http://youload.to/design/beta2/youload.css?37' type='text/css' media='screen'
charset='utf-8' /><link rel='stylesheet' href='http://youload.to/design/beta2/global.css?37'
type='text/css' media='screen' charset='utf-8' /></head><body><div class='error_message'>No
file Uploaded!
[url='test.php']Back[/url]</div></body></html>
was musste ich da lesen:
--> NO FILE UPLOADED

wo steckt dann denn hier beim upload der fehler ?
Delphi-Quellcode:
procedure TForm1.uploadClick(Sender: TObject);
var
  MultiPartFormDataStream: TMsMultiPartFormDataStream;
  Response: String;
begin
   MultiPartFormDataStream := TMsMultiPartFormDataStream.Create; // Objekte instanzieren
  try
      // Content-Type bestimmen
      idhttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType;

      // Formular-Felder setzen, die keine Dateien sein sollen
      // MultiPartFormDataStream.AddFormField('', '');
      // ...

      // Datei laden
      MultiPartFormDataStream.AddFile('upload', 'c:\clock.avi', '');

      // diese Methode muss _vor_ dem Senden augerufen werden
      MultiPartFormDataStream.PrepareStreamForDispatch;
      MultiPartFormDataStream.Position := 0;

      try
        // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
        Response := idhttp1.Post(s, MultiPartFormDataStream);
        memo1.Lines.Text := Response;
      except
        // Upload fehlgeschlagen, entsprechend reagieren
      end;
  finally
    MultiPartFormDataStream.Free;
  end;
end;
  Mit Zitat antworten Zitat
noo.bee

Registriert seit: 13. Sep 2009
24 Beiträge
 
#8

Re: http upload aus einer "Form" heraus

  Alt 23. Sep 2009, 23:06
könnte vllt mal jemand drüberlunsen ob er nicht den fehler findet ?
  Mit Zitat antworten Zitat
noo.bee

Registriert seit: 13. Sep 2009
24 Beiträge
 
#9

Re: http upload aus einer "Form" heraus

  Alt 24. Sep 2009, 21:12
ok, wenn keiner ne lösung weiß, dann werd ich das demnächst auf eis legen... hab den upload nach anleitung gemacht, aber irgendwo klemmts und ich find nicht raus wo...
habs auch mal bei DF gepostet - da scheint auch keiner den fehler zu finden
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

Re: http upload aus einer "Form" heraus

  Alt 24. Sep 2009, 23:35
Schau mal diesen Block an:
Delphi-Quellcode:
try
  // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
  Response := idhttp1.Post(s, MultiPartFormDataStream);
  memo1.Lines.Text := Response;
except
  // Upload fehlgeschlagen, entsprechend reagieren
end;
Es ist natürlich ziemlich suboptimal, jegliche Exceptions unter den Teppich zu kehren.
Ändere das mal so ab, dann hast du zumindest die Chance das Problem zu finden:
Delphi-Quellcode:
try
  // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
  Response := idhttp1.Post(s, MultiPartFormDataStream);
  memo1.Lines.Text := Response;
except
  on E:Exception do
  begin
    // Fehler protokollieren
    memo1.Lines.Text := E.Message;
    memo1.Lines.Add(E.ClassName);
  end;
end;
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz