2

我正在尝试使用 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我什么也得不到。有人知道我在做什么错吗?

4

2 回答 2

1

查看此答案以使用 AJAX 进行文件上传。这是可能的,但并非在所有浏览器中都兼容。

jQuery 上传进度和 AJAX 文件上传

--

或者,如果您想即时上传,有一个很酷的库,您可以将其称为“Uploadify”。它是一个 flash/jquery(或现在的 HTML5)装备,可让您即时上传文件。在 Flash 版本中,我上次使用它时……你可以添加回调函数,让它基本上做任何你想做的事情。

一些聪明的 javascript 可以使这项工作为您服务。

http://www.uploadify.com/

于 2012-10-23T15:14:13.200 回答
0

AJAX 不进行文件上传。它不是为此而设计的。标准的解决方法是让 JS 代码构建一个隐藏的 iframe 并在其中执行标准的 POST 类型上传。因此,如果您尝试这样做echo $_FILES['q']['error'],您可能会得到4“无文件”。

于 2012-10-23T14:49:36.567 回答