我正在尝试使用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
我没有得到任何东西。
谁知道我做错了什么?
答案 0 :(得分:1)
查看使用AJAX进行文件上传的答案。它可能,但在所有浏览器中都不兼容。
jQuery Upload Progress and AJAX file upload
-
或者,如果您想要即时上传,可以使用一个很酷的图书馆来上传' Uploadify'。它是一个flash / jquery(或HTML5 now)装备,允许您即时上传文件。在flash版本中,我上次使用它...你可以添加回调函数,使它基本上可以做你想要的任何事情。
一些聪明的javascript可以让这对你有用。
答案 1 :(得分:0)
AJAX不进行文件上传。它不是为此而设计的。标准的解决方法是让JS代码构建一个隐藏的iframe,并在其中执行标准的POST类型上载。因此,如果您尝试执行echo $_FILES['q']['error']
,则可能会因“无文件”而获得4
。