我知道這個問題可能會重複,但因爲現有的解決方案都不能幫助我發佈我自己的問題。 我有一個拖放區域,我想檢測拖動的項目是文件夾還是文件。在Chrome中我使用HTML5在Firefox中拖放文件夾檢測。它甚至有可能嗎?
for (var i = 0; i < nrOfFiles; i++) {
var entry = e.originalEvent.dataTransfer.items[i].webkitGetAsEntry();
if (entry.isDirectory) {
//folder detection
}
在Firefox中是無法使用上述溶液(WebKit),因此花費很多時間試圖解決這個問題後實現這一點,我想出了以下解決方案(和失敗)
我檢查拖動的項目是否沒有類型和大小如下,並在大多數情況下,它是按預期工作。從我讀過的這是不高效和不成功的,因爲有些文件可能沒有文件擴展名,所以我嘗試使用FileReader API將文件讀爲二進制字符串(readAsBinaryString)或readAsArrayBuffer,並在產品是不可讀,但從不拋出異常。
var files = e.originalEvent.dataTransfer.files; for (var i = 0; i < nrOfFiles; i++) { if (files[i].size === 0 && files[i].type==="") { try{ var reader = new FileReader(); reader.readAsBinaryString(files[i]); }catch(e){ //folder detection ? } }}
在下面的解決方案,我想使用mozGetDataAt作爲對應的webkitGetAsEntry(???不是100%,這個請糾正我,如果我錯了),但我得到一個安全異常。
var entry = e.originalEvent.dataTransfer.mozGetDataAt("application/x-moz-file",i); if (entry.isDirectory) { //not even reaching this statement. idk if isDirectory is applicable to entry //folder detection? }
,異常是:
Permission denied for <http://localhost:8080> to create wrapper for object of class UnnamedClass
實際上有沒有辦法在Firefox做到這一點?如果可能,我不想依賴第三方庫或服務器端處理。任何建議意見將不勝感激。
感謝
中號
它現在可能!看到我的回答:http://stackoverflow.com/a/33431704/195216 – dforce