edit:
ich hab mal zum testen die duck1709.pas mit in den anhang gepacktalso 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).
user: 123456123456
pass: 123456123456
procedure TForm1.loginClick(Sender: TObject);
begin
StringList := TStringList.Create; //TStringList erstellen
try
StringList.Values['yl_name'] := '123456123456';
StringList.Values['yl_pw'] := '123456123456';
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;
jedoch haut der upload nicht ganz hin. es wird zwar hochgeladen, aber nicht auf meinen account. ich habe auch bereits bei
IdHTTP1.CookieManager
den
IdCookieManager1
eingefügt. also ich hab bereits nen cookie gesetzt. hier mal der part zum upload:
procedure TForm1.uploadClick(Sender: TObject);
var
Stream: TIdMultiPartFormDataStream;
Response: String;
begin
Stream := TIdMultiPartFormDataStream.Create; // Objekte instanzieren
try
// Content-Type bestimmen
idhttp1.Request.ContentType := Stream.RequestContentType;
// Formular-Felder setzen, die keine Dateien sein sollen
Stream.AddFormField('MAX_FILE_SIZE', '9589934592');
//Stream.AddFormField('upload', '');
// ...
// Datei laden
Stream.AddFile('file[]', 'c:\clock.avi', 'multipart/form-data');
// diese Methode muss _vor_ dem Senden augerufen werden
//MultiPartFormDataStream.PrepareStreamForDispatch;
Stream.Position := 0;
try
// Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
Response := idhttp1.Post(s, Stream); // in "s" steht die URL zum upload
memo1.Lines.Text := Response;
except
// Upload fehlgeschlagen, entsprechend reagieren
end;
finally
Stream.Free;
end;
end;