Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Picuploader für Picupload.org (https://www.delphipraxis.net/119394-picuploader-fuer-picupload-org.html)

goenner90 25. Aug 2008 21:21


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:

Die Muhkuh 25. Aug 2008 21:36

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?

goenner90 25. Aug 2008 22:33

Re: Picuploader für Picupload.org
 
kann er net weil er es eben nicht kann...
also plz help bei dem upload mit INdy.

Thx

Torpedo 25. Aug 2008 22:37

Re: Picuploader für Picupload.org
 
Zitat:

Zitat von goenner90
kann er net weil er zu doof dafür ist sagt er.....
also plz help bei dem upload mit INdy.

Thx

Wer hat denn dann das Script auf der Seite gemacht und wer administriert den Server? (ich denke doch mal das ist ein Rootserver)

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.

goenner90 26. Aug 2008 14:34

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:

Björn Ole 26. Aug 2008 14:47

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:
AddFormField('upload', '')
AddFormField('MAX_FILE_SIZE', '10485760')
AddFormField('upload_von','computer')
Zum Schluss hängst du noch die Datei an:
Delphi-Quellcode:
AddFile('datei', 'C:\test.gif', 'image/gif');
Das Ganze sendets du per POST an http://picupload.org/index.php
Als Ergebnis solltest du den Quelltext zurückbekommen, in dem du dann nach der URL suchen musst.

Gruß, Björn

goenner90 26. Aug 2008 21:01

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:
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.
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

also bei Button1.click steht dann folgendes in der Memo :(also nach dem ausführen)

Delphi-Quellcode:
HTTP/1.1 200 OK
liegt aber glaube daran das ich das falsch abfange, hoch geladen wird es auf jeden fall trotzdem nciht...

Button1.click wirft folgendes in die memo:
Delphi-Quellcode:
            </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>
also selbstverständlich steht noch mehr im memo aber das ist halt der relevante teil...

so und button3.click haut das ins memo:
Delphi-Quellcode:
</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>
also das gleiche wie bei button2.click

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

Björn Ole 27. Aug 2008 01:03

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:
slWork.Text:=IdHTTP.Post();
Dann könntest du den Text zur Kontrolle in ein Memo laden und aus der StringList bequem die benögten URLs auslesen.

Gruß, Björn

goenner90 27. Aug 2008 12:00

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..

Björn Ole 27. Aug 2008 12:32

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