Hi,
ich möchte gerne mit idHTTP eine Datei auf RapidShare.com uploaden. Dazu hab ich mir folgendes gebastelt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TMainForm.RScomSendUpData; var FS, FS2: TFileStream; s,rs2,id,s2: String; Data: TIdMultiPartFormDataStream; begin FS:=TFileStream.Create('Temp.html',fmCreate); idHttp1.Get('http://rapidshare.com/',FS); FS.Free; s:=RegEx('e src=".*?"','Temp.html',True); Delete(s, 1, 7); s:=ReverseString(s); Delete(s, 1, 1); s:=ReverseString(s); FS := TFileStream.Create('temp1.html',fmCreate); Data := TIdMultiPartFormDataStream.Create; Data.AddFormField('mirror','on'); Data.AddFormField('german','1'); Data.AddFile('filecontent',Dateien.Strings[0],'multipart/form-data'); idHTTP1.Post(s, Data, FS); FS.Free; Application.ProcessMessages; end; |
RegEx führt jeweils eine RegExpression aus und in der TStringList Dateien sind die Dateipfäde gespeichert.
Wer es testen möchte:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| procedure LoadStringFromFile(Filename: string; var LoadString: string); var fs:TFileStream; begin fs:=TFileStream.Create(filename, fmOpenRead or fmShareDenyNone); SetLength(LoadString, fs.Size); if fs.size>0 then fs.Read(LoadString[1], fs.Size); fs.free; end;
function TMainForm.RegEx(Mask: String; Source: String; isFile: Boolean): String; var RE: TRegExpr; Quellcodepfad: string; htmlcode: string; begin RE := TRegExpr.Create; try try if isfile then begin Quellcodepfad:=ExtractFilePath(ParamStr(0))+Source; LoadStringFromFile(quellcodepfad,htmlcode); end else htmlcode:=source;
RE.Expression := Mask; if RE.Exec(htmlcode) then Result := RE.Match[0] else Result := 'kein Treffer'; except FehlerLabel.Caption := 'Fehler: '+Exception(ExceptObject).Message; end; finally RE.Free; end; end; |
Das mit dem Uploaden klappt auch, nur weiß ich nicht wie ich den Download Link dann bekommen soll. Im FS den ich über POST zurückbekomme steht nix brauchbares drin (nur diese Progressbar die beim Uploaden auf der RS.com Seite angezeigt wird). Weiß jemand wie ich den Link bekommen kann?