2011-04-14 67 views
2

我覺得完全是出於我的深度,但我感覺如此接近..AJAX - 上傳文件(HTML 5)和PHP

我試圖上傳使用AJAX的文件。我發現這個教程http://blog.new-bamboo.co.uk/2010/7/30/html5-powered-ajax-file-uploads,它似乎很好,直到最後。我似乎無法訪問PHP中的文件,即使用$ _FILES [「foo」] [「name」]; 我不確定如何使用其他技術上傳。

我不是在尋找的代碼是完美的,只是保持簡單,所以我能夠理解這是怎麼回事。在此先感謝:-)

這裏是我的服務器端代碼:

HTML: 頁面標題

</head> 
<body> 




    <form onsubmit='showUser(); return false;' enctype='multipart/form-data'> 
    <input id='the-file' name='file' type='file' /> 
    <input type='submit'> 
    </form> 
    <br /> 


    <div id='txtHint'><b></b></div> 

</body> 

的Javascript:

function showUser(str) 
{ 
var fileInput = document.getElementById('the-file'); 
var file = fileInput.files[0]; 
var foo = file.fileName; 

if (str=="") 
{ 
document.getElementById("txtHint").innerHTML=""; 
return; 
} 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() 
    { 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
} 
xmlhttp.open("POST","new_film_pro.php",true); 
xmlhttp.setRequestHeader("Content-type", "multipart/form-data"); 
xmlhttp.setRequestHeader("X-File-Type", file.type); 
xmlhttp.setRequestHeader("X-File-Name", foo); 
xmlhttp.send(file); 
} 

PHP:

<?php 


$postdata = file_get_contents("php://input"); 

echo "Name: " . $_SERVER['HTTP_X_FILE_NAME'] . "<br />"; 

?> 
+0

您是否嘗試過使用的var_dump($ _ FILES)? – 2011-04-14 06:22:09

+0

對不起,我之前沒有看到評論 - 我得到的結果是數組(0){} – Sheldon 2011-04-14 09:38:42

回答

2

看一看http://aquantum-demo.appspot.com/file-upload

編寫直接的JavaScript不再是個好主意。使用庫,頁面上展示,您可以創建支持多個文件,resumeable下載,進度條和許多其他功能,你真的會有出汗自己實現,但是這給用戶帶來更好的體驗一個更強大的文件上傳。

-1

我不是在表單標籤sure.but你沒有指定方法

-1

您可以使用的file_get_contents( 'PHP://輸入')來獲取文件的內容。