Picuploader für Picupload.org
HI,
ihr Progger aus der Delphi Praxis, Ich wurde von einem Freund angesprochen ob ich nicht ein kleines Upload Tool für seine Page basteln könnte (Picupload.org) . Das ausfüllen der Forms beim TWebbrowser war ja nicht schwer aber dieser ist meines erachtens dafür nich geeignet da man ihn dafür erstmal haben muss also den IE und ausserdem das ganze ziemlich den Prozessor auslastet da halt der IE benützt wird. Deswegen , habe ich es mit Indy versucht, weil ich schon desöfteren davon gelesen habe das das damit recht gut funzt und die Indykomponenten auch schon für andere Projekte benützt habe. Ich habe dann auch das hier gefunden : http://www.delphipraxis.net/internal...ht=indy+upload das hat aber net wirklich funktioniert........ jetzt wäre meine Frage wie ich auf picupload.org eine datei hochlade und dann am besten gleich noch die Links auslese die man bekommt. (Ja ich habe die Erlaubnis des Admins der Seite) Mfg goenner90 ICh hoffe eure klugen Köpfe können mir helfen ;-) :dp: |
Re: Picuploader für Picupload.org
Hi,
da Du die Erlaubnis des Admins hast, frag ihn doch mal, ob er nicht eine API bereit stellen kann? |
Re: Picuploader für Picupload.org
kann er net weil er es eben nicht kann...
also plz help bei dem upload mit INdy. Thx |
Re: Picuploader für Picupload.org
Zitat:
Du musst das Bild mit POST senden. Als Antwort bekommst du dann die Seite in dem die URL usw. sind. Das herauszufiltern sollte kein Problem darstellen. |
Re: Picuploader für Picupload.org
Das Script ist ein free - picupload script.
Na der Kumpel von mir administriert die Page. Ja das per Post senden is ja net gesagt, trotzdem noch kein PLan....und wie ich die antwort dan abfange auch nicht... PLz Help. mfg :dp: |
Re: Picuploader für Picupload.org
Hallo.
Dort findest du ein Beispiel, wie ein Bild an einen anderen Bildhoster gesendet wird: http://www.delphipraxis.net/internal...=919071#919071 Für PicUpload.org brauchst du folgende FormFields:
Delphi-Quellcode:
Zum Schluss hängst du noch die Datei an:
AddFormField('upload', '')
AddFormField('MAX_FILE_SIZE', '10485760') AddFormField('upload_von','computer')
Delphi-Quellcode:
Das Ganze sendets du per POST an http://picupload.org/index.php
AddFile('datei', 'C:\test.gif', 'image/gif');
Als Ergebnis solltest du den Quelltext zurückbekommen, in dem du dann nach der URL suchen musst. Gruß, Björn |
Re: Picuploader für Picupload.org
soo,
liebe leute heute war ein langer Tag ich habe bestimmt 5 stunden an dem ganzen upload dingens rumprobiert, nach manchen einsichten und kleinen erfolgen bin ich quasi immer noch bei 0...... hier mal mein Delphi source:
Delphi-Quellcode:
Button 1 -button3 click sind die verschiedenen prozeduren mit denen ich es versucht habe...ich würd gern weiter machen an dem prog aber wenn der uplaod nicht hinhaut kann ich das natürlich vergessen
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,idMultipartformdata,MsMultiPartFormData, IdBaseComponent, IdComponent, IdTCPServer, IdCustomHTTPServer, IdHTTPServer, IdTCPConnection, IdTCPClient, IdHTTP; type TForm1 = class(TForm) Button1: TButton; httpMain: TIdHTTP; Button2: TButton; Memo1: TMemo; Button3: TButton; IdHTTP1: TIdHTTP; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Stream: TMSMultiPartFormDataStream; StringStream: TStringStream; begin Stream := TMSMultiPartFormDataStream.Create; StringStream := TStringStream.Create(''); try Stream.AddFormField('upload', ''); Stream.AddFormField('MAX_FILE_SIZE', '10485760'); Stream.AddFormField('upload_von','computer'); Stream.AddFile('datei', 'C:\bild.jpg', 'image/jpeg'); IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; IdHTTP1.Post('http://picupload.org/index.php', Stream, StringStream); memo1.text:=idhttp1.ResponseText; finally Stream.Free; //StringStream.Free; end; end; procedure TForm1.Button2Click(Sender: TObject); var DataStream: TidMultiPartFormDataStream; Response: string; begin DataStream:=TidMultiPartFormDataStream.Create; try IdHTTP1.Request.ContentType:='multipart/form-data'; DataStream.AddFormField('upload', ''); DataStream.AddFormField('MAX_FILE_SIZE', '10485760'); DataStream.AddFormField('upload_von','computer'); DataStream.AddFile('file','C:\bild.jpg','image/jpg'); //Response:=IdHTTP1.Post('http://picupload.org',DataStream); memo1.Text:=IdHTTP1.Post('http://picupload.org/index.php',DataStream); finally DataStream.Free; end; end; procedure TForm1.Button3Click(Sender: TObject); var MultiPartFormDataStream: TMsMultiPartFormDataStream; HttpServer, Response: String; begin // Objekte instanzieren MultiPartFormDataStream := TMsMultiPartFormDataStream.Create; try // Content-Type bestimmen httpMain.Request.ContentType := MultiPartFormDataStream.RequestContentType; // andere Formular-Felder übergeben MultiPartFormDataStream.AddFormField('upload','1'); MultiPartFormDataStream.AddFormField('MAX_FILE_SIZE','10485760'); MultiPartFormDataStream.AddFormField('upload_von','computer'); // Datei laden MultiPartFormDataStream.AddFile('file','C:\bild.jpg','image/jpeg'); // Anfrage vorbereiten MultiPartFormDataStream.PrepareStreamForDispatch; { You must make sure you call this method *before* sending the stream } MultiPartFormDataStream.Position := 0; try // Anfrage stellen //Response := httpMain.Post('http://picupload.org/index.php', MultiPartFormDataStream); //memo1.Text:=Response; memo1.Text:= httpMain.Post('http://picupload.org/index.php', MultiPartFormDataStream); except //Upload fehlgeschlagen end; //end; finally MultiPartFormDataStream.Free; end; end; end. also bei Button1.click steht dann folgendes in der Memo :(also nach dem ausführen)
Delphi-Quellcode:
liegt aber glaube daran das ich das falsch abfange, hoch geladen wird es auf jeden fall trotzdem nciht...
HTTP/1.1 200 OK
Button1.click wirft folgendes in die memo:
Delphi-Quellcode:
also selbstverständlich steht noch mehr im memo aber das ist halt der relevante teil...
</table>
</td> </tr> <tr> <td class="box_text">Es wurde keine Datei hochgeladen. [url="./index.php"]Klick hier[/url], um zum Statseite zu gelangen. <script type="text/javascript">window.setTimeout("weiterleitung('./index.php')", 0000);</script>Sie werden in 0 Sekunden automatisch weitergeleitet.</td> </tr> </table> so und button3.click haut das ins memo:
Delphi-Quellcode:
also das gleiche wie bei button2.click
</table>
</td> </tr> <tr> <td class="box_text">Es wurde keine Datei hochgeladen. [url="./index.php"]Klick hier[/url], um zum Statseite zu gelangen. <script type="text/javascript">window.setTimeout("weiterleitung('./index.php')", 0000);</script>Sie werden in 0 Sekunden automatisch weitergeleitet.</td> </tr> </table> Ich habe jetzt in dem source schgon viel rumprobiert und wegkomentiert und ausprobiert...aber es will nicht gelingen. Kann mir jmd vll eine funktionierende Prozedur geben? Ich würde mich auch mit einem 7 Tage Rs Account revanchieren. mfg goenner90 |
Re: Picuploader für Picupload.org
Ich würde den StringStream weglassen und das Ergebnis der Post-Function (=HTML-Code, der vom Browser geparst werden würde) einer TStringList.Text Property zuweisen:
Delphi-Quellcode:
Dann könntest du den Text zur Kontrolle in ein Memo laden und aus der StringList bequem die benögten URLs auslesen.
slWork.Text:=IdHTTP.Post();
Gruß, Björn |
Re: Picuploader für Picupload.org
Hallo Björn,
leider blick ich da jetzt nich ganz mehr durch da man nach dem verzweifelten Versuchen auch iwann verrückt im Kopf wird was man schon probiert hat und was nicht..... Wärst du vielleicht so lieb und könntest den Source so umschreiben wie du sagtest? Jedem anderen der den Upload hinbekommt biete ich immer noch einen 7 Tages Rapidshare Premium Account. mfg ...wenn endlich der upload funzen würde, würde das ganze nicht so hängen und ich könnt weiter machen.. |
Re: Picuploader für Picupload.org
Dein erster Versuch war schon fast richtig:
Delphi-Quellcode:
uses
IdHTTP, IdMultiPartFormData; procedure PicUpload(BildPfad); var IdHTTP: TIdHTTP; Stream: TIdMultiPartFormDataStream; slWork: TStringList; begin IdHTTP:=TIdHTTP.Create; Stream:=TIdMultiPartFormDataStream.Create; slWork:=TStringList.Create; try Stream.AddFormField('upload', ''); Stream.AddFormField('MAX_FILE_SIZE', '10485760'); Stream.AddFormField('upload_von','computer'); Stream.AddFile('datei', BildPfad, 'image'+StringReplace(ExtractFileExt(BildPfad),'.','/',[])); slWork.Text:=IdHTTP.Post('http://picupload.org/index.php', Stream); // in slWork.Text steht jetzt der HTML Code. Viel Spaß beim filtern :-D finally IdHTTP.Free; Stream.Free; slWork.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 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