2011-05-09 69 views
10

有很多使用html5讀取本地文件的例子,但通過從文件列表中選擇,我的問題是我想手動創建文件對象,想想我有與鏈接如何使用文件路徑創建/初始化文件對象html5

file:///G:/Users/txt.txt 

我想在瀏覽器中打開一個文件,

我認爲它有文件f=new File('file:///G:/Users/txt.txt');

我的問題是,如何創建/使用文件路徑初始化文件對象? !

+1

如果由於文件系統差異(UNIX vs. Win協議等)和安全性而無法實現這一點,我不會感到驚訝。我當然不希望我的瀏覽器在我不知道的情況下覆蓋一些我的文件。 :) – 2011-05-09 07:02:06

+0

使用html5開發移動應用程序,試圖將一些數據保存到SDCard並再次檢索 – Yahia 2011-05-09 07:04:41

+0

我認爲您可能更容易依賴localStorage。請參閱http://dev.w3.org/html5/webstorage/。 – 2011-05-09 08:00:21

回答

2

沒有用戶的許可,確實沒有辦法創建文件。需要按下按鈕或其他東西。您需要創建一個數據:uri才能保存。您可以使用網絡搜索或檢查http://en.wikipedia.org/wiki/Data_URI_scheme(不完整的來源,但可以顯示可能的內容)找到更多信息。這取決於手機和操作系統的限制。數據URI在使用IE時受到限制。

當它被觸發下載時,它會保存到指定的默認位置或用戶。您可能還想查看供應商/操作系統特定的API調用,可以按照您的描述進行操作。但在實際允許訪問之前可能需要驗證權限。

25

自從File繼承blob接口以來,我使用了下面的解決方法。

var getFileBlob = function (url, cb) { 
     var xhr = new XMLHttpRequest(); 
     xhr.open("GET", url); 
     xhr.responseType = "blob"; 
     xhr.addEventListener('load', function() { 
      cb(xhr.response); 
     }); 
     xhr.send(); 
}; 

var blobToFile = function (blob, name) { 
     blob.lastModifiedDate = new Date(); 
     blob.name = name; 
     return blob; 
}; 

var getFileObject = function(filePathOrUrl, cb) { 
     getFileBlob(filePathOrUrl, function (blob) { 
      cb(blobToFile(blob, 'test.jpg')); 
     }); 
}; 

getFileObject('img/test.jpg', function (fileObject) { 
    console.log(fileObject); 
}); 
+1

我必須使用XMLHttpRequest,即使是本地文件路徑? – 2016-01-30 06:27:57

+1

這是否適用於所有瀏覽器? – MichelH 2016-08-28 02:25:32

+0

這是否也適用於Android,在iOS上運行良好,但android似乎不喜歡它....? – Stradosphere 2016-09-26 17:54:41

相關問題