![](/img/trans.png)
[英]PHP codeigniter file upload $_FILES['pic']['tmp_name'];
[英]PHP and Ajax file upload - Can't get the tmp_name with $_FILES
我正在尝试使用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上传文件。 可能,但并非在所有浏览器中都兼容。
-
另外,如果您想即时上传,则可以使用一个很酷的库,称为“ Uploadify”。 这是一个Flash / jquery(或现在的HTML5)绑定,可让您即时上传文件。 在Flash版本中,我上次使用它是...您可以添加回调函数,使其基本上可以执行您想要的任何事情。
一些聪明的javascript可能会为您工作。
AJAX不会上传文件。 它不是为此设计的。 标准的解决方法是让JS代码构建隐藏的iframe,并在其中执行标准的POST类型的上传。 这样,如果您尝试执行echo $_FILES['q']['error']
,则“无文件”可能会得到4
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.