![]() |
http upload aus einer "Form" heraus
also 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 :thumb: ). jedoch haut der upload nicht hin. user: 123456123456 pass: 123456123456
Delphi-Quellcode:
kann einer helfen und sagen, wo der fehler liegt ?
procedure TForm1.uploadClick(Sender: TObject);
var MultiPartFormDataStream: TMsMultiPartFormDataStream; Response: String; begin MultiPartFormDataStream := TMsMultiPartFormDataStream.Create; // Objekte instanzieren try // Content-Type bestimmen idhttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType; // Formular-Felder setzen, die keine Dateien sein sollen MultiPartFormDataStream.AddFormField('', ''); // ... // Datei laden MultiPartFormDataStream.AddFile('upload', 'c:\clock.avi', ''); // diese Methode muss _vor_ dem Senden augerufen werden MultiPartFormDataStream.PrepareStreamForDispatch; MultiPartFormDataStream.Position := 0; try // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen Response := idhttp1.Post(s, MultiPartFormDataStream); // in der variablen 's' steht die url, wohin hochgeladen werden soll,da sich die url ändert except // Upload fehlgeschlagen, entsprechend reagieren end; finally MultiPartFormDataStream.Free; end; end; |
Re: http upload aus einer "Form" heraus
Eine etwas ausführlichere Fehlerbeschreibung als "haut nicht hin" wäre bestimmt hilfreich.
|
Re: http upload aus einer "Form" heraus
naja es kommt keine fehlermeldung oder sowas.
ich drücke meinen button fürs hochladen, dann geschieht der zugriff aufs inet (sagt meine firewall) und für n paar sek ist das proggie am arbeiten (der upload dauert nur wenige sekunden). aber wenn ich dann auf den account bei duckload.com schaue (user und passwort sind richtig eingetragen zum einloggen :wink: ), ist dort keine datei angekommen. die url zum hochladen in der variable 's' wird geparsed mit Pos, PosEx und Copy, da sich diese immer ändert. |
Re: http upload aus einer "Form" heraus
Cross-Post im DF:
![]() |
Re: http upload aus einer "Form" heraus
danke :thumb:
|
Re: http upload aus einer "Form" heraus
ich poste mal den ganze code, vllt lässt sich das dann besser der fehler finden :gruebel:
Delphi-Quellcode:
unit duck1709;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, MsMultiPartFormData, IdCookieManager, StrUtils, pngimage, ExtCtrls, GIFImg; type TForm1 = class(TForm) Edit1: TEdit; login: TButton; IdHTTP1: TIdHTTP; Edit2: TEdit; Memo1: TMemo; upload: TButton; IdCookieManager1: TIdCookieManager; storXX: TButton; Label1: TLabel; Edit3: TEdit; Image1: TImage; Label2: TLabel; Label3: TLabel; Image2: TImage; Image3: TImage; procedure loginClick(Sender: TObject); procedure uploadClick(Sender: TObject); procedure storXXClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; StringList, sl: TStringList; Edit3: TEdit; s: string; implementation {$R *.dfm} procedure TForm1.loginClick(Sender: TObject); begin StringList := TStringList.Create; //TStringList erstellen try StringList.Values['yl_name'] := '123456123456'; //Edit1.Text; StringList.Values['yl_pw'] := '123456123456'; //Edit2.Text; 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; //////////////////////////////////////////////////////////////// procedure TForm1.storXXClick(Sender: TObject); var Position1, Position2: Integer; begin s := idhttp1.Get('http://duckload.com/index.html'); //sucht nach action=" und gibt die Position im String zurück, //wir erhalten die Position von a möchten aber wissen was zwsichen // " und " steht. Also zählen wir die Länge des Suchstrings dazu Position1 := pos('action="', s) +8; //wir suchen nach dem abschließenden ", ab unserer ersten Position, //könnten ja mehrere " im String sein... Position2 := PosEx(s, '"', Position1) - 1; //wir kopieren den Text zwischen unseren Positionen, Copy erwartet //aber nicht die Position des letzten Zeichen als dritten Parameter //sondern die Anzahl der zu kopieren zeichen, da darfst du jetzt mal selbst überlegen ;-) s := Copy(s, Position1, 48); edit3.Text := s; // Ausgabe des benutzten Stores end; //////////////////////////////////////////////////////////////// procedure TForm1.uploadClick(Sender: TObject); var MultiPartFormDataStream: TMsMultiPartFormDataStream; Response: String; begin MultiPartFormDataStream := TMsMultiPartFormDataStream.Create; // Objekte instanzieren try // Content-Type bestimmen idhttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType; // Formular-Felder setzen, die keine Dateien sein sollen MultiPartFormDataStream.AddFormField('', ''); // ... // Datei laden MultiPartFormDataStream.AddFile('upload', 'clock.avi', 'multipart/form-data'); // diese Methode muss _vor_ dem Senden augerufen werden MultiPartFormDataStream.PrepareStreamForDispatch; MultiPartFormDataStream.Position := 0; try // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen Response := idhttp1.Post(s, MultiPartFormDataStream); except // Upload fehlgeschlagen, entsprechend reagieren end; finally MultiPartFormDataStream.Free; end; end; end. |
Re: http upload aus einer "Form" heraus
also ich hab mir mal die fehlerseite rückgeben lassen:
Code:
was musste ich da lesen:
<html><head><title>Error</title><link rel='stylesheet'
href='http://youload.to/design/beta2/youload.css?37' type='text/css' media='screen' charset='utf-8' /><link rel='stylesheet' href='http://youload.to/design/beta2/global.css?37' type='text/css' media='screen' charset='utf-8' /></head><body><div class='error_message'>No file Uploaded! [url='test.php']Back[/url]</div></body></html> --> NO FILE UPLOADED wo steckt dann denn hier beim upload der fehler ?
Delphi-Quellcode:
procedure TForm1.uploadClick(Sender: TObject);
var MultiPartFormDataStream: TMsMultiPartFormDataStream; Response: String; begin MultiPartFormDataStream := TMsMultiPartFormDataStream.Create; // Objekte instanzieren try // Content-Type bestimmen idhttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType; // Formular-Felder setzen, die keine Dateien sein sollen // MultiPartFormDataStream.AddFormField('', ''); // ... // Datei laden MultiPartFormDataStream.AddFile('upload', 'c:\clock.avi', ''); // diese Methode muss _vor_ dem Senden augerufen werden MultiPartFormDataStream.PrepareStreamForDispatch; MultiPartFormDataStream.Position := 0; try // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen Response := idhttp1.Post(s, MultiPartFormDataStream); memo1.Lines.Text := Response; except // Upload fehlgeschlagen, entsprechend reagieren end; finally MultiPartFormDataStream.Free; end; end; |
Re: http upload aus einer "Form" heraus
:oops: :oops: könnte vllt mal jemand drüberlunsen ob er nicht den fehler findet ? :oops: :oops:
|
Re: http upload aus einer "Form" heraus
ok, wenn keiner ne lösung weiß, dann werd ich das demnächst auf eis legen... hab den upload nach anleitung gemacht, aber irgendwo klemmts und ich find nicht raus wo...
habs auch mal bei DF gepostet - da scheint auch keiner den fehler zu finden :?: |
Re: http upload aus einer "Form" heraus
Schau mal diesen Block an:
Delphi-Quellcode:
Es ist natürlich ziemlich suboptimal, jegliche Exceptions unter den Teppich zu kehren.
try
// Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen Response := idhttp1.Post(s, MultiPartFormDataStream); memo1.Lines.Text := Response; except // Upload fehlgeschlagen, entsprechend reagieren end; Ändere das mal so ab, dann hast du zumindest die Chance das Problem zu finden:
Delphi-Quellcode:
try
// Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen Response := idhttp1.Post(s, MultiPartFormDataStream); memo1.Lines.Text := Response; except on E:Exception do begin // Fehler protokollieren memo1.Lines.Text := E.Message; memo1.Lines.Add(E.ClassName); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz