2014-02-19 21 views
2

獲取對象的URL我目前裝車做丟棄的文件:從FileEntry的(或同等學歷)

var files = e.dataTransfer.items; 
for (var i = 0; i < files.length; i++) { 
    var file = files[i]; //typeof is 'DataTransferItem' 
    var url = URL.createObjectURL(file); 
} 

這讓我的URL對象,這一點我可以再投入音樂播放器。但是,當迭代輸入的文件夾時:

var reader = entry.createReader(); 
reader.readEntries(function (res) { 
    res.forEach(function (entry) { 
     console.log('The entry:', entry); 
     console.log('The url:', JSON.stringify(entry.toURL())); 
    }); 
}); 

我得到的文件類型爲FileEntry。根據this我應該可以做file.toURL()並使用它來代替對象url。這確實會返回一個空字符串。 this seems to be there for a reason,但我不知道如何解決這個問題。我看到關於blob URL的一些信息,但我不知道如何工作。 Example 試圖將文件和文件夾拖放到屏​​幕輸出,看它自己

+0

blob url與window.URL的url相同。 – dandavis

+0

@dandavis但是我將如何獲得該網址? – MarijnS95

+2

這很複雜。你可以在http://danml.com/dev/devsite.js上看到一個我在1960年左右開始使用的(馬虎)例程,但它讓我感到困惑,回想起它,我不確定它會有多麼有啓發性是的,但我知道它的作品,允許丟棄文件夾到http://danml.com/dev/... – dandavis

回答

2

我如何固定它:

從一個入口用typeof FileEntry,我們可以做.file(callback),其中在回調的第一個參數是File類型,然後我們可以只創建從的ObjectURL的:

var reader = entry.createReader(); 
reader.readEntries(function (res) { 
    res.forEach(function (entry) { 
     entry.file(function(file){ //this does the trick 
      var obj = URL.createObjectURL(file); 
     } 
    }); 
}); 

非常感謝誰給我提供他的javascript代碼和近似直線,所以我可以去看看它自己dandavis;)