您好,登錄后才能下訂單哦!
怎么在PHP中使用HTML5 FileApi實(shí)現(xiàn)Ajax上傳文件功能?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
FileApi是HTML5的一個新特性,有了這個新特性,js就可以讀取本地的文件了,然后實(shí)現(xiàn)真正的Ajax上傳文件了,而不是iframe方法,下面會介紹api的使用,以及實(shí)現(xiàn)Ajax上傳文件:
FileApi使用
定義上傳控件:
<input type="file" name="pic" onchange="selfile();" />
當(dāng)上傳文件后,就會觸發(fā)selfile()
函數(shù),selfile()
代碼:
var files = document.getElementsByTagName('input')[0].files;//fileList對象,文件列表對象,表示有多個文件被上傳,如果只有1個文件上傳也是fileList對象 var files = document.getElementsByTagName('input')[0].files[0];//file對象,表示單個上傳文件
Ajax上傳文件
項(xiàng)目結(jié)構(gòu)圖:
11-fileApi.html文件:
頁面中主要有一個上傳文件按鈕,如果有文件上傳,onchange事件被響應(yīng),selfile函數(shù)調(diào)用,然后js讀取上傳文件、把文件名和大小顯示在頁面中、創(chuàng)建FormData對象并添加數(shù)據(jù)、ajax上傳文件、預(yù)覽上傳文件效果。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>fileApi實(shí)現(xiàn)Ajax上傳文件</title> <link rel="stylesheet" href=""> <script> function selfile(){ var file = document.getElementsByTagName('input')[0].files[0];//js讀取上傳文件 var con = ''; con += '文件名:' + file.name + '<br/>'; con += '大小:' + file.size; document.getElementById('debug').innerHTML = con;//把文件名和大小顯示在頁面中 var fd = new FormData();//創(chuàng)建FormData對象 fd.append('pic',file);//添加文件數(shù)據(jù) //ajax上傳文件 var xhr = new XMLHttpRequest(); xhr.open('POST','11-fileApi.php',true); xhr.send(fd); var img = document.createElement('img');//動態(tài)創(chuàng)建img標(biāo)簽 img.src = window.URL.createObjectURL(file);//把二進(jìn)制對象直接讀出瀏覽器顯示的資源 document.getElementsByTagName('body')[0].appendChild(img);//把img標(biāo)簽動態(tài)添加到dom樹中 } </script> </head> <body> <input type="file" name="pic" onchange="selfile();" /> <div id="debug"></div> </body> </html>
11-fileApi.php文件:
首先判斷是否有文件上傳,然后判斷上傳是否成功,最后把文件復(fù)制到當(dāng)前目錄下的upload目錄下,文件名保持不變。
<?php /** * fileApi實(shí)現(xiàn)Ajax上傳文件 * @author webbc */ if(empty($_FILES)){ exit('no file'); } if($_FILES['pic']['error'] !== 0){ exit('fail'); } move_uploaded_file($_FILES['pic']['tmp_name'],'./upload/'.$_FILES['pic']['name']); ?>
關(guān)于怎么在PHP中使用HTML5 FileApi實(shí)現(xiàn)Ajax上傳文件功能問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。