![](/img/trans.png)
[英]How to upload file to server with HTTP POST multipart/form-data?
[英]Sending HTTP POST multipart/form-data from Android client to HTTP server
我正在編寫一個允許用戶拍照的應用程序,該照片會自動發送到HTTP服務器,並通過HTTP POST multipart / form-data進行分類。 為了構建和發送這些請求,我正在使用Apache的HTTPClient庫。 我已經對Imgur API端點之一和正確上傳的圖像進行了測試,因此我對自己的Java客戶端代碼能夠工作充滿信心。 因此,我認為服務器上的端點很可能有錯誤。 我正在將請求發送到服務器,以編寫該文件的PHP腳本來接收該請求,將該腳本保存到服務器上的目錄中,然后將響應適當地發送回客戶端。 當我對此進行測試時,即使腳本顯然無法正常工作,服務器也會始終返回狀態碼為200的響應。 我嘗試將響應狀態代碼手動設置為500以強制輸入錯誤代碼,即使這樣也不起作用,這使我認為當請求到達端點時,整個腳本甚至無法運行(如果它甚至到達了端點) )。 我希望這要么是服務器配置錯誤,要么是腳本本身錯誤。 但是,為了方便起見,我粘貼了Java代碼。 您可能在那里也發現了一些錯誤。 我對網絡或PHP都不滿意,因此我可以肯定會使用一些更有經驗的眼睛。
我的服務器代碼:
<?php
$path = '/home/user01/Documents/uploaded_images/';
$ext = '.jpg';
function getFileName() {
return 'image_'.date('Y-m-d_His');
}
//Receive the data from android client
$file = $_FILES['uploadedFile'];
//process the data
$filename = $path . getFileName() . '_' . $_SERVER['REMOTE_ADDR'] . $ext;
if (!is_uploaded_file($file['tmp_name']) ||
!copy($file['tmp_name'], $filename))
{
$message = 'Could not save file as' . $filename;
$error = True;
}
else {
$message = "Image uploaded successfully!";
$error = False;
}
//return response to the server
if ($error) {
http_response_code(500);
}
echo json_encode(
array(
'status' => 'Repsonse Code :' . http_response_code(),
'message' => $message
), JSON_FORCE_OBJECT);
?>
更新和解決方案:
在一些帖子評論者的幫助下進行了一些故障排除之后,我首先嘗試編寫一個簡單的HTML表單以將POST請求本地提交到PHP腳本,然后在這些請求失敗后,然后在以下代碼的開頭添加die()
函數代碼,但仍然沒有任何反應。 這使我能夠找出錯誤。
我遇到的問題是由錯誤的服務器配置引起的。 這導致PHP無法被識別為已安裝的語言。 因此,該腳本根本沒有被執行。 固定配置后,腳本將完全按預期工作。
評論者的洞察力備受贊譽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.