2013-01-04 60 views
1

我已經在HTML5中使用xHR2和File api實現了一個AJAX文件上傳器,用於內部項目。我們只需要支持Firefox/Safari/Chrome。我用下面的鏈接作爲參考用於Internet Explorer的回退AJAX文件上傳

  1. http://www.html5rocks.com/en/tutorials/file/xhr2/
  2. http://www.html5rocks.com/en/tutorials/dnd/basics/
  3. https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications

現在我需要支持Internet Explorer 10及以下。 IE 10支持XHR2,但File API支持是lacking。有沒有辦法檢測到這些API不被支持?如果我可以檢測到API不受支持,那麼如何爲IE實現AJAX文件上傳?

我正在使用Google Closure JS庫而不是jQuery或任何其他庫。圖書館的選擇不能改變。請在迴應中使用jQuery或某些特效。但是,任何使用jQuery的代碼片段都是完全正確的。

+1

即10的文件API支持並不缺乏。您可以在ie10中使用xhr上傳文件,而不會有任何問題。 –

回答

2

最近我一直在處理的文件上傳到與谷歌封庫一起使用。我發現fine-uploader庫是一個好的開始。它不是用閉包庫編寫的,但它爲我提供了基本的指導原則:使用xhr上載文件(如果支持),否則後備將文章形成隱藏的iframe。

在我的代碼中,我實現了兩個類:一個使用XMLHttpRequest上傳文件,另一個使用goog.net.IframeIosendFromForm方法上載文件。

+0

感謝@lins,這很好。我會讓你知道這是怎麼回事。 – Kartik

3

可能是檢測該文件API存在的最簡單方法是

typeof File

在支持文件API它應該返回一個對象或功能的瀏覽器 - Internet Explorer的返回undefined

至於如何回退並使其適用於所有用戶

我已使用此工具https://github.com/valums/ajax-upload創建iframe並將上傳內容發佈到iframe和emu lates一個AJAX文件上傳 - 它的所有純JavaScript無圖書館和支持所有的方式回到IE6

+1

https://github.com/valums/ajax-upload是相當古老,不再支持。它已被https://github.com/valums/file-uploader取代,它得到了很好的支持並且非常活躍。 –

+0

感謝@ lins05,我能夠找出如何推斷File API是否受支持。 – Kartik

相關問題