php教程 ajax實現非同步檔案上傳的代碼
1:取得file對象
2:讀取2進位資料
3:類比http請求,把資料發送出去(這裡通常比較麻煩)
在forefox下使用 xmlhttprequest 對象的 sendasbinary 方法發送資料;
4:完美實現
遇到的問題
目前僅有 firefox 可以正確上傳檔案。(chrome也可以采google.gears上傳)
對於從firefox和chrome下讀取到的檔案資料好像不一樣(不知道是否是調試工具的原因)
chrome以及其他進階瀏覽器沒有 sendasbinary 方法 只能使用 send 方法發送資料,有可能是上面的原因導致無法正確上傳。(經過測試普通文字檔可以正確上傳)
html5 file and filereader
(把圖片拖拽到這裡)利用 filereader 擷取檔案 base64 編碼
filereader對象
var filereader = new filereader();
filereader.onloadend = function(){
console.log(this.readystate); // 這個時候 應該是 2
console.log(this.result); 讀取完成回呼函數,資料儲存在result中
}
filereader.readasbinarystring(file);// 開始讀取2進位資料 非同步 參數為file 對象
//filereader.readasdataurl(file); // 讀取base64
//filereader.readastext(file);//讀取文本資訊
http://www.bkjia.com/PHPjc/444775.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/444775.htmlTechArticlephp教程 ajax實現非同步檔案上傳的代碼 1:取得file對象 2:讀取2進位資料 3:類比http請求,把資料發送出去(這裡通常比較麻煩) 在forefox下使用...