Einzelnen Beitrag anzeigen

noo.bee

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

Re: http upload aus einer "Form" heraus

  Alt 22. Sep 2009, 12: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