HTML:
<input id="fileSelect" type="file" name="files[]" multiple="multiple" accept="image/*" />
JS:
alert( filesArray );
3 three images.//
// [object File],[object File],[object File]
// new FormData object.
var formData = new FormData();
formData.append( 'files[]', filesArray );
jQuery.ajax
({
url: ajaxurl, // uploadfile.php
type: "POST",
data: {
action: 'auto_post',
form_data: formData
},
processData: false,
contentType: false,
success: function( data )
{
alert( data );
},
error: function( data )
{ }
});
当我不使用时:
processData: false,
contentType: false,
我得到了:(错误)
TypeError: 'append' called on an object that does not implement interface FormData.
现在该怎么办?我需要使用ajax将formData发送到php服务器端。
uploadfile.php
我需要在这里访问:
$_FILES["files"]["name"];
Ajax数据到达:
// Ajax Funtion.
function aap_auto_post()
{
echo $_FILES['files']['name'];
die();
}
add_action( 'wp_ajax_auto_post', 'aap_auto_post' );
add_action( 'wp_ajax_nopriv_auto_post', 'aap_auto_post' );
答案 0 :(得分:2)
ajax请求中发送的所有值必须附加到FormData对象,而不仅仅是文件。此外,文件必须单独添加。
var formData = new FormData();
for (var i = 0; i < filesArray.length; i++){
formData.append( 'files[]', filesArray[i]);
}
formData.append( 'action', 'auto_post');
...
data: formData,
答案 1 :(得分:0)
使用id选择这样的表格
$('form#YOUR_FORM_ID').submit(function(e){
e.preventDefault();
var formData = new FormData($(this)[0]);
$.ajax({
url: 'YOUR_SERVER_URI',
type: 'POST',
data: formData,
async: true,
success: function (data) {
alert(data);
},
cache: false,
contentType: false,
processData: false
});
return false;
});
这将在服务器端处理$ _FILES。这样做是正常的。