[英]Ajax: How to send 'empty' file using FormData and jQuery and get it in $_FILES
我有HTML表單,並希望使用Ajax和jQuery發送文件“ myfile”:
<form method="post" enctype="multipart/form-data">
<input type="file" name="myfile" id="myfile">
</form>
我的JavaScript代碼:
function getFile(fieldName){
var itemValue = $('input[name="' + fieldName + '"]')[0].files[0];
return itemValue;
}
function sendFile(){
var formaData = new FormData();
var itemName = 'myfile';
var itemValue = getFile(itemName);
formaData.append(itemName, itemValue);
$.ajax({
type: 'POST',
data: formaData,
processData: false,
contentType: false,
});
}
選擇文件后,一切正常。 我在服務器中有$ _FILES全局數組和通過Ajax獲得的數據:
["myfile"]=>
array(5) {
["name"]=>
string(13) "file_name.jpg"
["type"]=>
string(10) "image/jpeg"
["tmp_name"]=>
string(14) "/tmp/phpefJlk3"
["error"]=>
int(0)
["size"]=>
int(344100)
}
未選擇文件時的問題! 當我不選擇任何文件並發送Ajax請求時,我有空的$ _FILES,但是我有$ _POST且字段“ myfile”等於“ undefined”。 但是我需要$ _FILES中的'myfile'字段,即使它為空。 我想要類似的東西:
["myfile"]=>
array(5) {
["name"]=>
string(0) ""
["type"]=>
string(0) ""
["tmp_name"]=>
string(0) ""
["error"]=>
int(4)
["size"]=>
int(0)
}
如果我不使用Ajax發送空表單,則上面是$ _FILES globall數組中的內容。 如果我使用Ajax,我也希望如此。 有可能嗎?
您可以檢查$_FILES['myfile']['error']
和$_FILES['myfile']['size']
並返回您選擇的數組作為結果。 如果$ _FILES ['myfile'] ['error']等於零,則沒有錯誤。 您可以在php.net上找到更多詳細信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.