亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用javascript進行本地文件訪問

使用javascript進行本地文件訪問

使用javascript進行本地文件訪問是否有使用JavaScript完成的本地文件操作?我正在尋找一種可以在沒有安裝空間的情況下完成的解決方案,例如需要AIR。具體來說,我想從文件中讀取內容并將這些內容寫入另一個文件。在這一點上,我并不擔心獲得權限,只是假設我已經擁有這些文件的完全權限。
查看完整描述

4 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

如前所述,FileSystemFile API以及FileWriter API可用于從瀏覽器選項卡/窗口的上下文讀取和寫入文件到客戶端計算機。

有一些與FileSystem和FileWriter API有關的事情,你應該知道,其中一些被提到,但值得重復:

  • API的實現目前僅存在于基于Chromium的瀏覽器(Chrome和Opera)中

  • 這兩個API均于2014年4月24日從W3C標準軌道中刪除,截至目前為專有

  • 從未來實現瀏覽器中刪除(現在的專有)API是可能的

  • 沙箱(在磁盤上以外的位置,其中文件可以產生沒有影響)用于存儲與所述的API所創建的文件

  • 使用虛擬文件系統(磁盤上不一定存在的目錄結構與從瀏覽器中訪問時所使用的形式相同)表示使用API創建的文件

以下是如何直接和間接使用API來執行以下操作的簡單示例:

BakedGoods *

寫文件:

bakedGoods.set({
    data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
    storageTypes: ["fileSystem"],
    options: {fileSystem:{storageType: Window.PERSISTENT}},
    complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}});

閱讀文件:

bakedGoods.get({
        data: ["testFile"],
        storageTypes: ["fileSystem"],
        options: {fileSystem:{storageType: Window.PERSISTENT}},
        complete: function(resultDataObj, byStorageTypeErrorObj){}});

使用原始文件,FileWriter和FileSystem API

寫文件:

function onQuotaRequestSuccess(grantedQuota){

    function saveFile(directoryEntry)
    {

        function createFileWriter(fileEntry)
        {

            function write(fileWriter)
            {
                var dataBlob = new Blob(["Hello world!"], {type: "text/plain"});
                fileWriter.write(dataBlob);              
            }

            fileEntry.createWriter(write);
        }

        directoryEntry.getFile(
            "testFile", 
            {create: true, exclusive: true},
            createFileWriter        );
    }

    requestFileSystem(Window.PERSISTENT, grantedQuota, saveFile);}var desiredQuota = 1024 * 1024 * 1024;var quotaManagementObj =
     navigator.webkitPersistentStorage;quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);

閱讀文件:

function onQuotaRequestSuccess(grantedQuota){

    function getfile(directoryEntry)
    {

        function readFile(fileEntry)
        {

            function read(file)
            {
                var fileReader = new FileReader();

                fileReader.onload = function(){var fileData = fileReader.result};
                fileReader.readAsText(file);             
            }

            fileEntry.file(read);
        }

        directoryEntry.getFile(
            "testFile", 
            {create: false},
            readFile        );
    }

    requestFileSystem(Window.PERSISTENT, grantedQuota, getFile);}var desiredQuota = 1024 * 1024 * 1024;var quotaManagementObj =
     navigator.webkitPersistentStorage;quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);

雖然FileSystem和FileWriter API不再符合標準,但在我看來,在某些情況下,它們的使用是合理的,因為:

  • 來自未實現的瀏覽器供應商的更新興趣可能會將它們重新置于其上

  • 實施(基于Chromium)瀏覽器的市場滲透率很高

  • 谷歌(Chromium的主要貢獻者)尚未給出API的生命終止日期

但是,“某些情況”是否包含您自己的情況,由您決定。

* BakedGoods由這個人維持正確:)


查看完整回答
反對 回復 2019-05-27
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

如果用戶選擇文件<input type="file">,您可以使用File API 讀取處理該文件。

設計不允許讀取或寫入任意文件。這違反了沙箱。來自維基百科 - > Javascript - >安全性

JavaScript和DOM為惡意作者提供了通過Web在客戶端計算機上運行腳本的潛力。瀏覽器作者使用兩個限制包含此風險。首先,腳本在沙箱中運行,在沙箱中,腳本只能執行與Web相關的操作,而不能執行創建文件等通用編程任務 。

2016 UPDATE:直接訪問文件系統經由能夠文件系統API,這是僅由鉻和歌劇支持可能最終沒有被實現為通過其他瀏覽器(與邊緣的例外)。有關詳細信息,請參閱Kevin的回答。


查看完整回答
反對 回復 2019-05-27
  • 4 回答
  • 0 關注
  • 1461 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號