2013-10-28 56 views
0

upload.php腳本的$_FILES變量保持零長度。爲什麼沒有發送文件?一切似乎都是按順序進行的。我想刪除表格並完全通過onchange處理程序執行上傳。這可能嗎?簡單的XHR文件上傳不傳輸文件

<li>upload:<form id=upload enctype="multipart/form-data"> 
<input type=file id=file name=o onchange="submit()"/> 
</form></li> 

<script> 
document.getElementById('upload').submit=function(){ 
var ul=document.getElementById('file'); 
if(ul.files.length>0){ 
    file=ul.files[0]; 
    var x=(window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP'); 
    x.onreadystatechange=function(){if(x.readyState==4&&x.status==200){ 
    alert(x.responseText);} 
    } 
    x.open('post','upload.php',true); 
    x.setRequestHeader('Content-Type','multipart/form-data'); 
    x.setRequestHeader('X-File-Name',file.name); 
    x.setRequestHeader('X-File-Size',file.size); 
    x.setRequestHeader('X-File-Type',file.type); 
    x.send(file); 
} 
return false; 
} 

+0

這些「上傳」和「提交」功能是什麼? – Bergi

+0

你想使用'.onsubmit'! – Bergi

+0

'onSubmit'和'submit'是一樣的,我還沒有看過瀏覽器的兼容性呢 – aelgoa

回答

1

嘗試FormData,它設置在自己的頭。

var formData = new FormData(); 
formData.append("Filedata", document.getElementById("file").files[0]); 

var x=(window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP'); 
x.onreadystatechange=function(){if(x.readyState==4&&x.status==200){ 
    alert(x.responseText);} 
} 
x.open("POST", url); 
x.send(formData);