上传的PHP文件显示为false

时间:2015-03-01 23:55:27

标签: php file-upload upload

我有一个包含多个文件上传的表单,每个输入都是唯一命名的,但是,在尝试获取上传的文件时,我的测试显示为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提交。

1 个答案:

答案 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();
});