我有一个包含多个文件上传的表单,每个输入都是唯一命名的,但是,在尝试获取上传的文件时,我的测试显示为false。
请找到以下代码。我不知道为什么会发生这种情况。
<label class="label" for="uploadfile">Contract:</label>
<input name="'.$ICP.'_uploadedfile" id="'.$ICP.'_uploadedfile" type="file" />
$ ICP var被循环播出,因为可能有多个实例,所以这样每个名称都是唯一的,在服务器端,为ICP的每个循环请求POST。
while($icp_details = mysqli_fetch_array($ICP_exist_qry)){
$ICP_ID = stripslashes($icp_details['ICP_ID']);
if(!file_exists($_FILES[$ICP_ID."_uploadedfile"]['tmp_name']) || !is_uploaded_file($_FILES[$ICP_ID."_uploadedfile"]['tmp_name'])) {
echo false;
} else {
echo true;
}
}
我在检索其他已发布输入的值时没有任何问题,只是上传的文件部分。
对此的任何帮助表示赞赏。 :)
注意:表单由Ajax提交。
答案 0 :(得分:2)
要使用Ajax(在本例中为JQuery)正确上传文件,您需要使用FormData对象。下面的代码片段说明了如何使用它。它用来代替.serialize()或.serializeArray()方法。
$('#file-form').submit(function(e) {
$.ajax({
url: 'http://example.com/upload/',
type: 'POST',
data: new FormData(this),
processData: false,
contentType: false
});
e.preventDefault();
});