Mam prosty skrypt php na moim serwerze WWW, który muszę przesłać plik za pomocą HTTP POST, który robię w Delphi.Http Post z indykiem
Oto mój kod z Indy ale aparantely to nie zadziała i nie mogę dowiedzieć się, co robię niewłaściwie. Jak mogę zobaczyć, co wysyłam na serwerze, czy istnieje takie narzędzie?
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;
"To nie działa" jest najmniej użyteczną frazą możliwą podczas debugowania czegoś. Co nie działa? Co robi źle? –
@MasonWheeler, jeśli znałem odpowiedź prawdopodobnie nie zadawałem tego pytania. Nie przesyła ona na serwer sieciowy, ale moim zdaniem, nagłówek postu jest zniekształcony, ale nie wiem, co robię źle. – opc0de
dlaczego jest MS.Clear; wywoływana przed http.Post (URL, MS)? – ComputerSaysNo