真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HTML5文件操作API的方法

小編給大家分享一下HTML5文件操作API的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端重慶網(wǎng)站建設(shè)、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、網(wǎng)站定制、全網(wǎng)營銷推廣小程序制作、微信公眾號開發(fā)、成都網(wǎng)站推廣服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為成都門窗定制企業(yè)提供源源不斷的流量和訂單咨詢。

簡介

如果網(wǎng)絡(luò)應(yīng)用能夠讀取和寫入文件與目錄,將會非常方便。從離線轉(zhuǎn)移到在線后,應(yīng)用變得更加復(fù)雜,而文件系統(tǒng)方面的API的缺乏也一直阻礙著網(wǎng)絡(luò)前進(jìn)。存儲二進(jìn)制數(shù)據(jù)或與其進(jìn)行交互不應(yīng)局限于桌面。令人欣慰的是,由于FileSystemAPI的出現(xiàn),這一現(xiàn)狀終于得到了改變。有了FileSystemAPI,網(wǎng)絡(luò)應(yīng)用就可以創(chuàng)建、讀取、導(dǎo)航用戶本地文件系統(tǒng)中的沙盒部分以及向其中寫入數(shù)據(jù)。

API 被分為以下不同的主題:

  • 讀取和處理文件:File/Blob、FileList、FileReader

  • 創(chuàng)建和寫入:BlobBuilderFileWriter

  • 目錄和文件系統(tǒng)訪問:DirectoryReader、FileEntry/DirectoryEntryLocalFileSystem

瀏覽器支持與存儲限制

在寫這篇文章時,只有 GoogleChrome 瀏覽器可以實施此FileSystemAPI。目前尚不存在專門用于文件/配額管理的瀏覽器用戶界面。要在用戶的系統(tǒng)上存儲數(shù)據(jù),您的應(yīng)用可能需要請求配額。不過,可使用--unlimited-quota-for-files標(biāo)記運行Chrome瀏覽器進(jìn)行測試。此外,如果您要開發(fā)的是用于Chrome網(wǎng)上應(yīng)用店的應(yīng)用或擴(kuò)展程序,可使用unlimitedStorage清單文件權(quán)限,而無需請求配額。最后,用戶會收到授予、拒絕或為應(yīng)用增加存儲的權(quán)限對話框。

如果您要通過 file://調(diào)試您的應(yīng)用,可能需要--allow-file-access-from-files標(biāo)記。不使用這些標(biāo)記會導(dǎo)致SECURITY_ERRQUOTA_EXCEEDED_ERRFileError。

請求文件系統(tǒng)

網(wǎng)絡(luò)應(yīng)用可通過調(diào)用 window.requestFileSystem()請求對沙盒文件系統(tǒng)的訪問權(quán)限:

// Note: The file system has been prefixed as of Google Chrome 12:  
window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;  
  
window.requestFileSystem(type, size, successCallback, opt_errorCallback)

type

文件存儲是否應(yīng)該是持久的??赡艿闹蛋╳indow.TEMPORARY和window.PERSISTENT。通過TEMPORARY存儲的數(shù)據(jù)可由瀏覽器自行決定刪除(例如在需要更多空間的情況下)。要清除PERSISTENT存儲,必須獲得用戶或應(yīng)用的明確授權(quán),并且需要用戶向您的應(yīng)用授予配額。請參閱請求配額。

size

應(yīng)用需要用于存儲的大?。ㄒ宰止?jié)為單位)。

successCallback

文件系統(tǒng)請求成功時調(diào)用的回調(diào)。其參數(shù)為 FileSystem對象。

opt_errorCallback

用于處理錯誤或獲取文件系統(tǒng)的請求遭到拒絕時可選的回調(diào)。其參數(shù)為FileError對象。

如果您是首次調(diào)用requestFileSystem(),系統(tǒng)會為您的應(yīng)用創(chuàng)建新的存儲。請注意,這是沙箱文件系統(tǒng),也就是說,一個網(wǎng)絡(luò)應(yīng)用無法訪問另一個應(yīng)用的文件。這也意味著您無法在用戶硬盤上的任意文件夾(例如“我的圖片”、“我的文檔”等)中讀/寫文件。

用法示例:

function onInitFs(fs) {
  console.log('Opened file system: ' + fs.name);}
  window.requestFileSystem(window.TEMPORARY, 5*1024*1024 /*5MB*/, onInitFs, errorHandler);

FileSystem 規(guī)范還定義了計劃用于WebWorkers的同步API(LocalFileSystemSync)接口。不過,本教程不涉及該同步API。

在本文檔的其余部分中,我們將使用相同的處理程序處理異步調(diào)用引發(fā)的錯誤:

function errorHandler(e) {  
  var msg = '';  
  
  switch (e.code) {  
    case FileError.QUOTA_EXCEEDED_ERR:  
      msg = 'QUOTA_EXCEEDED_ERR';  
      break;  
    case FileError.NOT_FOUND_ERR:  
      msg = 'NOT_FOUND_ERR';  
      break;  
    case FileError.SECURITY_ERR:  
      msg = 'SECURITY_ERR';  
      break;  
    case FileError.INVALID_MODIFICATION_ERR:  
      msg = 'INVALID_MODIFICATION_ERR';  
      break;  
    case FileError.INVALID_STATE_ERR:  
      msg = 'INVALID_STATE_ERR';  
      break;  
    default:  
      msg = 'Unknown Error';  
      break;  
  };  
  
  console.log('Error: ' + msg);  
}

解的訊息。請求存儲配額要使用 PERSISTENT 存儲,您必須向用戶取得存儲持久數(shù)據(jù)的許可。由于瀏覽器可自行決定刪除臨時存儲的數(shù)據(jù),因此這一限制不適用于 TEMPORARY 存儲。為了將 PERSISTENT 存儲與 FileSystem API 配合使用,Chrome 瀏覽器使用基于 window.webkitStorageInfo 的新 API 以請求存儲:

window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024, function(grantedBytes) {  
  window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);  
}, function(e) {  
  console.log('Error', e);  
});

用戶授予許可后,就不必再調(diào)用 requestQuota() 了。后續(xù)調(diào)用為無操作指令。您還可以使用 API 查詢源的當(dāng)前配額使用情況和分配情況:window.webkitStorageInfo.queryUsageAndQuota()使用文件沙盒環(huán)境中的文件通過 FileEntry 接口表示。FileEntry 包含標(biāo)準(zhǔn)文件系統(tǒng)中會有的屬性類型(name、isFile...)和方法(remove、moveTo、copyTo...)。FileEntry 的屬性和方法:

fileEntry.isFile === true  
fileEntry.isDirectory === false  
fileEntry.name  
fileEntry.fullPath  
...  
  
fileEntry.getMetadata(successCallback, opt_errorCallback);  
fileEntry.remove(successCallback, opt_errorCallback);  
fileEntry.moveTo(dirEntry, opt_newName, opt_successCallback, opt_errorCallback);  
fileEntry.copyTo(dirEntry, opt_newName, opt_successCallback, opt_errorCallback);  
fileEntry.getParent(successCallback, opt_errorCallback);  
fileEntry.toURL(opt_mimeType);  
  
fileEntry.file(successCallback, opt_errorCallback);  
fileEntry.createWriter(successCallback, opt_errorCallback);  
...

為了更好地理解 FileEntry,本部分還提供了執(zhí)行常規(guī)任務(wù)的眾多技巧。創(chuàng)建文件您可以使用文件系統(tǒng)的 getFile()(DirectoryEntry 接口的一種方法)查找或創(chuàng)建文件。請求文件系統(tǒng)后,系統(tǒng)會向成功回調(diào)傳遞FileSystem 對象,其中包含指向該應(yīng)用相應(yīng)文件系統(tǒng)的根的 DirectoryEntry (fs.root)。以下代碼會在該應(yīng)用相應(yīng)文件系統(tǒng)的根中創(chuàng)建名為“l(fā)og.txt”的空白文件:

function onInitFs(fs) {  
  
  fs.root.getFile('log.txt', {create: true, exclusive: true}, function(fileEntry) {  
  
    // fileEntry.isFile === true  
    // fileEntry.name == 'log.txt'  
    // fileEntry.fullPath == '/log.txt'  
  
  }, errorHandler);  
  
}  
  
window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);

請求文件系統(tǒng)后,系統(tǒng)會向成功處理程序傳遞 FileSystem 對象。我們可以將回調(diào)中的 fs.root.getFile() 命名為要創(chuàng)建的文件的文件名。您可以傳遞絕對路徑或相對路徑,但該路徑必須有效。例如,如果您嘗試創(chuàng)建一個其直接父級文件不存在的文件,將會導(dǎo)致出錯。getFile() 的第二個參數(shù)是在文件不存在時從字面上說明函數(shù)行為的對象。在此示例中,create: true 會在文件不存在時創(chuàng)建文件,并在文件存在時 (exclusive: true) 引發(fā)錯誤。如果 create: false,系統(tǒng)只會獲取并返回文件。無論是哪種情況,系統(tǒng)都不會覆蓋文件內(nèi)容,因為我們只是獲取相關(guān)文件的引用路徑。通過名稱讀取文件以下代碼會檢索名為“l(fā)og.txt”的文件,并使用 FileReader API 讀取文件內(nèi)容,然后將其附加到頁面上新的