我正在尝试使用 Ajax 上传文件,但我在处理文件时遇到了问题... 出于测试目的,我构建了一个如下所示的简单代码:
JS:
xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST",document.getElementById('upload').action,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
var cmdStr="q="+str;
xmlhttp.send(cmdStr);
document.getElementById("ResponseDiv").innerHTML=xmlhttp.responseText;
PHP:
$q=$_POST["q"];
echo $q;
它工作正常并且 xmlhttp.responseText
打印 [object File]
。
但是,我的问题是我需要使用 $_FILES["q"]['tmp_name']
获取临时文件名。为此,我将代码更改为以下内容:
JS:
xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST",document.getElementById('upload').action,true);
xmlhttp.setRequestHeader("enctype","multipart/form-data");
var cmdStr="q="+str;
xmlhttp.send(cmdStr);
document.getElementById("ResponseDiv").innerHTML=xmlhttp.responseText;
PHP:
$q=$_FILES["q"]["tmp_name"];
echo $q;
问题是现在使用 xmlhttp.responseText
我什么也得不到。
有人知道我做错了什么吗?
最佳答案
查看此答案以使用 AJAX 上传文件。这是可能的,但并非在所有浏览器中都兼容。
jQuery Upload Progress and AJAX file upload
--
或者,如果您想即时上传,可以使用一个名为“Uploadify”的很棒的库。它是一个 flash/jquery(或现在的 HTML5)装置,允许您即时上传文件。在 Flash 版本中,我上次使用它...您可以添加回调函数,使其基本上可以执行任何您想要的操作。
一些聪明的 javascript 可以为您完成这项工作。
关于PHP 和 Ajax 文件上传 - 无法使用 $_FILES 获取 tmp_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13033104/