我寫了這個使用HTML中的input
元素將圖像上傳到我的本地Apache網絡服務器。 file
被記錄爲非空,但爲什麼form_data
完全空?FormData附加不起作用
$('#upload-image').change(function(e){
var file = e.target.files[0];
var imageType = /image.*/;
if (!file.type.match(imageType))
return;
console.log(file);
var form_data = new FormData();
form_data.append('file', file);
console.log(form_data);
$.ajax({
url: 'http://localhost/upload.php',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'POST',
success: function(response){
console.log(response);
},
error: function(error){
console.log(error);
}
});
});
這是本地網絡服務器我upload.php
<?php
header('Access-Control-Allow-Origin: *');
if (0 < $_FILES['file']['error']) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else {
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
$target_path = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . $_FILES['file']['name'];
echo $target_path;
}
?>
的console.log(response)
記錄所有PHP文件的代碼行,而不是echo
你試過在url中使用'upload.php'嗎?查看絕對路徑並不常見,更不用說本地主機了,請記住,AJAX調用取決於JavaScript文件所在的位置,例如,如果您的根目錄中有一個名爲「phpFiles/upload.php」的文件夾,那麼應該放在網址中。 – Leo
console.log(form_data);你在這裏得到什麼? –
你期待看到什麼?你不能真正地記錄一個formData對象,所以它應該是空的,即使該文件在那裏。如果收到文件,你檢查了服務器嗎? – adeneo