![](/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.