Einzelnen Beitrag anzeigen

goenner90

Registriert seit: 25. Dez 2007
21 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Picuploader für Picupload.org

  Alt 26. Aug 2008, 22:01
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)

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
  Mit Zitat antworten Zitat