尝试在下面的代码上上传文件, 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
$ _通过HTTP Post方法提交了上传到当前脚本的项目的关联数组。此数组的结构在"邮政方法上传"部分中概述。
$fileName = $_FILES['fileToUpload']['name'];
$fileTmpName = $_FILES['fileToUpload']['tmp_name'];
和上传文件,在您的PHP中,您需要tmp_name
和文件的name
。您的uploadNewUserPicture($var)
功能应具有以下参数签名
uploadNewUserPicture($tmp_name, $image_name);