1
我有充當Web服務器並允許用戶將文件上傳到Web服務器的用戶之間的接口的程序。當用戶點擊「上傳」從列表視圖需要的信息,並將其發送到網站,第一http.Post是實際的文件,第二個是對元數據我保存它。您可以使用TIdHTTP將帖子發送至網站嗎?
當我註釋掉後的第一個語句,它工作正常,實際上職位數據,但它似乎並沒有得到任何的PARAMS爲第二個,當他們在那裏是兩者兼而有之。當我使用Param中的值在Web瀏覽器中運行腳本時,它也可以工作。
UFile是包含該文件的元數據的記錄。
IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create;
http := TIdHTTP.Create(nil);
http.IOHandler := IOHandler;
Param := TStringList.Create;
DataParams := TIdMultiPartFormDataStream.Create;
Stream := TStringStream.Create('');
DebugStream := TStringStream.Create('');
Param.Add('serial='+UFile.Serial);
Param.Add('filename='+UFile.Name);
Param.Add('filepath='+'\'+UFile.Serial+'\'+IntToStr(UFile.PatchID));
Param.Add('patchid='+IntToStr(UFile.PatchID));
Param.Add('patchnotes='+UFile.PatchNotes);
Param.Add('earliestversion='+UFile.EarliestVersion);
Param.Add('latestversion='+UFile.LatestVersion);
Param.Add('date='+DateToStr(UFile.Date));
Param.Add('execaftersend='+BoolToStr(UFile.ExecAfterSend));
DataParams.AddFile('file', UFile.FilePath, 'application/octet-stream');
try
http.Post('http://example.com/postFile.php', DataParams, Stream);
ShowMessage(Stream.DataString);
http.Post('http://example.com/uploadFiles.php', Param, DebugStream);
ShowMessage(DebugStream.DataString);
for J := 0 to Pred(Param.Count) do
DebugStrings := DebugStrings + '&' + Param.Strings[J];
ShowMessage(DebugStrings);
except
on E: EIdHTTPProtocolException do
begin
ShowMessage('Error code:' + IntToStr(E.ErrorCode));
end
end;
你是什麼意思它「似乎並沒有得到任何的則params的」?服務器是否收到TCP連接?它是否收到給定URL的HTTP請求?你的程序會發生什麼? –
@RobKennedy對於所有請求的參數,DebugStream.DataString都會返回「未定義變量在... ...等等」的錯誤。 – Aaron
這似乎是一個PHP錯誤。如果有效,請通過瀏覽器查看。 –