Ich habe ein einfaches PHP-Skript auf meinem Webserver, die ich eine Datei mithilfe von HTTP POST hochladen muss, was ich in Delphi mache.Http Post mit Indy
Hier ist mein Code mit Indy aber aparantely wird es nicht funktionieren und ich kann nicht herausfinden, was ich nicht richtig mache. Wie kann ich sehen, was ich auf dem Server sende, gibt es ein solches Tool?
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;
"Es funktioniert nicht" ist die am wenigsten nützliche Phrase beim Debuggen von etwas. Was funktioniert nicht? Was macht es falsch? –
@MasonWheeler Wenn ich die Antwort wüsste, würde ich diese Frage wahrscheinlich nicht stellen. Es wird nicht auf den Webserver hochgeladen, das ist das Problem, meine Vermutung, dass der Post-Header falsch ist, aber ich weiß nicht, was ich falsch mache. – opc0de
Warum ist MS.Clear; vor http.Post (URL, MS) aufgerufen? – ComputerSaysNo