【问题标题】:JQuery ajax FormData: file not added to POSTJQuery ajax FormData:文件未添加到POST
【发布时间】:2018-06-07 11:26:48
【问题描述】:

尝试上传文件,下面代码中的var_dump($_POST) 表明ajax 没有设置$_POST['file']。我没有除此之外的错误消息,所以我不知道我哪里出错了。

VAR 转储结果

array(1) {
["action"]=>
string(20) "uploadNewUserPicture"
}

HTML

<div id="userInfoUploadProfilePic">   
  <form id="userUploadProfilePicForm" method="post" enctype="multipart/form-data">
  <div class="userInfoFormTitle">UPLOAD PROFILE PICTURE</div>
  <input type="file" name="fileToUpload" id="userImg"></input>
  <br>
  <input id="submitPictureButton" type="button" value="Upload Image" name="submit">
  </form>
</div

JS

var file = $('#userImg')[0].files[0];
var formData = new FormData();

formData.append('action', 'uploadNewUserPicture');
formData.append('file', file );

$.ajax({
     url: "php/upload.php",
     type: "post",
     processData: false,
     contentType: false,
     data: formData,
     success: function(result) {
      console.log(result);
     },
    error: handleAjaxError,
   });

PHP

if(isset($_POST['action']) && !empty($_POST['action'])) {
  var_dump($_POST);
  $action = $_POST['action'];
  $var = $_POST['file'];

  switch($action) {
   case 'uploadNewUserPicture' : uploadNewUserPicture($var);break;
  }
};

【问题讨论】:

  • 你检查$_FILES['file']了吗?

标签: jquery ajax post file-upload


【解决方案1】:

上传文件时需要使用$_FILES

$_FILES 通过 HTTP POST 方法上传到当前脚本的项目的关联数组。该数组的结构在 POST 方法上传部分中进行了概述。

$fileName = $_FILES['fileToUpload']['name']; 
$fileTmpName = $_FILES['fileToUpload']['tmp_name']; 

要上传文件,在您的 PHP 中,您需要文件的 tmp_namename。您的uploadNewUserPicture($var) 函数应具有以下参数签名

uploadNewUserPicture($tmp_name, $image_name);

【讨论】:

  • 王牌!!谢谢
猜你喜欢
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2014-06-05
相关资源
最近更新 更多