Mój problem jest następujący. W Delphi próbuje napisać najprostszy uploader plików graficznych. Pliki zamierzam wysyłać na ImageReverb - jeden z serwisów oferujacych hosting grafiki. Otóż korzystam z programiku napisanego przez Adama Boducha (wysłanie danych metodą POST) pochodzącego z Kompendium znajdującego się na Waszej stronie. W Delphi jestem totalną nogą. Orginalny skrypt z Kompendium zmieniłem do własnych potrzeb, wydaje się ze wszystko powinno działać (ciąg danych POST jest poprawny w 100%), a jednak wyskakuje błąd, po czym muszę restartować projekt, bo program debugguje bez końca... Co robić? Może jest jakiś inny sposób, a może coś po prostu robię nie tak? Może o sesje chodzi? Nie wiem nie znam się za bardzo na programowaniu. ;/
Wyskakujące okienko z błędem:
Kod programu przerobiony już przeze mnie:
{
Copyright (c) 2002 by Adam Boduch <[email protected]>
}
unit MainFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, StdCtrls;
type
TMainForm = class(TForm)
HTTP: TIdHTTP;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
memMsg: TMemo;
btnSendMsg: TButton;
procedure btnSendMsgClick(Sender: TObject);
procedure HTTPConnected(Sender: TObject);
procedure HTTPDisconnected(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.btnSendMsgClick(Sender: TObject);
var
StreamIn, StreamOut : TStringStream;
begin
{ utworzenie strumieni }
HTTP.Host := 'www.imagereverb.com';
StreamIn := TStringStream.Create('');
StreamOut := TStringStream.Create('');
try
StreamIn.WriteString(Format('imbedded_progress_bar=1&upload_range=1&title=TITLE_TEST_TEST_TEST&adpaid=0&upfile_0=C:\screen.zip§ion=adult&category=1&
memberid=9999&categories=&fontsize=&fontcolor=black&helpbox=&textarea=&no_script_submit=%s', [memMsg.Text])); // w miejscu %s występuje słowo 'Upload', ale ładuje je dopiero z pola 'formularza' (znajdującego się w programie)
HTTP.Post('http://www.imagereverb.com/uu_file_upload.php', StreamIn, StreamOut); // wysłanie zawartości do skryptu
{ wyświetlenie odpowiedzi jaka została zwrócona przez skrypt }
MessageBox(Handle, PChar(StreamOut.DataString), 'Wiadomość wysłana :-)', MB_ICONINFORMATION);
finally
{ zwolnienie zasobów }
StreamIn.Free;
StreamOut.Free;
end;
end;
procedure TMainForm.HTTPConnected(Sender: TObject);
begin
btnSendMsg.Enabled := False;
end;
procedure TMainForm.HTTPDisconnected(Sender: TObject);
begin
btnSendMsg.Enabled := True;
end;
end.