我的网络服务器上有一个简单的php脚本, 我需要用 HTTP POST 上传一个文件, 我在德尔斐正在这样做。
我和Indy的代码在这里,但有保证它不会起作用,我无法弄清楚我做错了什么。我怎么能看到我发送到服务器上的东西有这样一个工具呢?
procedure TForm1.btn1Click(Sender: TObject);
var
fname : string;
MS,dump : TMemoryStream;
http : TIdHTTP;
const
CRLF = #13#10;
begin
if PromptForFileName(fname, , , , ,false) then
begin
MS := TMemoryStream.Create();
MS.LoadFromFile(fname);
dump := TMemoryStream.Create();
http := TIdHTTP.Create();
http.Request.ContentType:= multipart/form-data;boundary =-----------------------------7cf87224d2020a ;
fname := CRLF + -----------------------------7cf87224d2020a + CRLF + Content-Disposition: form-data; name="uploadedfile";filename="test.png" + CRLF;
dump.Write(fname[1],Length(fname));
dump.Write(MS.Memory^,MS.Size);
fname := CRLF + -----------------------------7cf87224d2020a-- + CRLF;
dump.Write(fname[1],Length(fname));
ShowMessage(IntToStr(dump.Size));
MS.Clear;
try
http.Request.Method := POST ;
http.Post( http://posttestserver.com/post.php ,dump,MS);
ShowMessage(PAnsiChar(MS.Memory));
ShowMessage(IntToStr(http.ResponseCode));
except
ShowMessage( Could not bind socket );
end;
end;
end;