【发布时间】:2017-02-03 14:53:47
【问题描述】:
我正在尝试使用 ajax post 方法将图像文件传递给 php 文件。脚本发送对象,但我的解析器没有得到 $_FILES["avatar"]["name"] 和 tmp_name。有没有办法像表单一样通过 AJAX 发送文件?
我的 HTML:
<input type="file" id="avatar_file" name="avatar" />
<input type="file" id="title_file" name="title" />
<input name="myBtn" type="submit" id="save_changer" value="Submit Data" onclick="subForm();">
我的 Javascript:
function subForm(){
var hr = new XMLHttpRequest();
var url = "php_parsers/photo_system.php";
var fn = document.getElementById("avatar_file").files[0];
var formData = new FormData();
formData.append("avatar", fn);
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
alert(fn);
}
}
hr.send(formData);
}
还有我的 PHP 解析器(php_parsers/photo_system.php):
if (isset($_FILES["avatar"]["name"]) && $_FILES["avatar"]["tmp_name"] != ""){
$fileName = $_FILES["avatar"]["name"];
$fileTmpLoc = $_FILES["avatar"]["tmp_name"];
$fileType = $_FILES["avatar"]["type"];
$fileSize = $_FILES["avatar"]["size"];
$fileErrorMsg = $_FILES["avatar"]["error"];
【问题讨论】:
-
表单标签的外观如何?你认出 enctype 属性了吗?
标签: javascript php ajax