自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTML 5中的文件處理之File Writer API

開發(fā) 前端
這里是介紹HTML5文件處理的第二部分,之前已經(jīng)介紹過了基礎(chǔ)的FileAPI,接下來是如何通過JS創(chuàng)造文件的部分。我們稱之為FileWriterAPI。

這里是介紹HTML5文件處理的第二部分,之前已經(jīng)介紹過了基礎(chǔ)的FileAPI,接下來是如何通過JS創(chuàng)造文件的部分。我們稱之為FileWriterAPI

需要提前解釋的是,F(xiàn)ileWriterAPI不是一個可以“獨立”存在的規(guī)范,它強烈的依賴于FileAPI和即將介紹的FileSystemAPI。FileAPI是最基礎(chǔ)的接口這毋庸置疑,而之所以先于FileSystemAPI介紹FileWriterAPI,是因為FileSystemAPI是一套更龐大的接口設(shè)計集合,F(xiàn)ileWriterAPI相比之下相對簡單,可以算作是FileSystemAPI也用得到的一部分基礎(chǔ),提前介紹給大家。

總覽

這部分一共有三大接口:

* BlobBuilder接口:創(chuàng)建Blob

* FileSaver接口:提供一些列方法和事件監(jiān)聽方式,代表一個保存文件的過程

* FileWriter接口:是從FileSaver擴展來的,提供更豐富的輸出選擇

需要注意的是,F(xiàn)ileSaver和FileWriter是不能通過接口指定要保存或要寫入的文件的,它們都是對象創(chuàng)建時就已經(jīng)確定的并且不可更改。同時FileSaver更是不提供控制寫入什么內(nèi)容的接口,要寫入的內(nèi)容也是對象創(chuàng)建時就已經(jīng)確定的并且不可更改的;而FileWriter可以通過接口控制要寫入的內(nèi)容。

接口描述

同樣的,這3個接口其實并不復(fù)雜,也很好理解(同樣的,接口中的“#Foo”表示任意Foo類型的對象):

BlobBuilder接口

  1. #BlobBuilder.getBlob([contentType]) // 返回目前已放入的所有Blob數(shù)據(jù)構(gòu)成的對象  
  2. #BlobBuilder.append(text[, contentType]) // 放入文本數(shù)據(jù)  
  3. #BlobBuilder.append(data) // 放入數(shù)據(jù)(Blob或ArrayBugger) 

FileSaver接口

  1. #FileSaver.abort() // 中斷保存操作  
  2. #FileSaver.readyState // 保存工作的狀態(tài)(DONE、INIT、WRITING)  
  3. #FileSaver.error // 最后一次出錯的錯誤信息  
  4. #FileSaver.onwritestart // 寫入操作開始時觸發(fā)  
  5. #FileSaver.onwrite // 寫入操作成功時觸發(fā)  
  6. #FileSaver.onwriteend // 寫入操作完成時觸發(fā)(不管成功還是失敗)  
  7. #FileSaver.onprogress // 寫入操作過程中觸發(fā)  
  8. #FileSaver.onabort // 寫入操作被中斷時觸發(fā)  
  9. #FileSaver.onerror // 寫入操作失敗時觸發(fā) 

FileWriter接口

  1. #FileWriter.position // 當前寫入操作所處的位置  
  2. #FileWriter.length // 文件長度(或在無權(quán)讀取文件信息的情況下返回已寫入的長度)  
  3. #FileWriter.write(blob) // 在position處寫入blob數(shù)據(jù)  
  4. #FileWriter.seek(offset) // 設(shè)置position屬性為offset  
  5. #FileWriter.truncate(size) // 在size處截斷文件  
  6. #FileWriter.abort() // 繼承自FileSaver  
  7. #FileWriter.readyState // 繼承自FileSaver  
  8. #FileWriter.error // 繼承自FileSaver  
  9. #FileWriter.onwritestart // 繼承自FileSaver  
  10. #FileWriter.onwrite // 繼承自FileSaver  
  11. #FileWriter.onwriteend // 繼承自FileSaver  
  12. #FileWriter.onprogress // 繼承自FileSaver  
  13. #FileWriter.onabort // 繼承自FileSaver  
  14. #FileWriter.onerror // 繼承自FileSaver 

代碼示例

舉例一:創(chuàng)建Blob對象

  1. var blobBuilder = new BlobBuilder(); // 創(chuàng)建BlobBuilder對象  
  2. blobBuilder.append("我今天只說三句話;"); // 連續(xù)放入文本  
  3. blobBuilder.append("包括這一句;");  
  4. blobBuilder.append("我的話完了。");  
  5.  
  6. var url = window.URL.createObjectURL(blobBuilder.getBlob()); // 返回Blob對象并以此創(chuàng)建URL  
  7. window.open(url); // 通過URL打開這個Blob對象 

舉例二:使用FileWriter

  1. fileEntry.createWriter(function (fileWriter) {  
  2.     fileWriter.write(blobBuilder.getBlob()); // 返回Blob對象并通過fileWriter寫入  
  3.     fileWriter.onwriteend = function () {...}; // 綁定寫入操作完成后的事件  
  4. }); 

這里需要注意的是:

1.在不同的瀏覽器下,BlobBuilder和window.URL依然存在著不同的前綴,比如webkit下的接口分別為WebKitBlobBuilder和webkitURL;

2.這里出現(xiàn)了一個陌生的對象fileEntry和陌生的方法createWriter,這正是接下來要介紹的一套比較復(fù)雜的API:FileSystemAPI的一部分內(nèi)容。想弄清楚fileWriter具體運行的環(huán)境,還得繼續(xù)學(xué)習(xí),不過拋開外部環(huán)境的形成過程,fileWriter的用法應(yīng)該可以體會到了;

3.FileSaver還沒有用得到的地方,畢竟標準還沒有最終形成,也許他將來某一天,借助其它規(guī)范的優(yōu)勢,搖身一變,就用在“另存為對話框”之類的地方了。

以上就是對FileWriterAPI的介紹,緊接著就是FileSystemAPI了,屆時HTML5所有文件操作的神秘面紗都會被揭開。

原文:http://bulaoge.net/topic.blg?dmn=g3g4&tid=2356045

【編輯推薦】

  1. HTML 5中的文件處理之FileAPI
  2. 淺析IndexedDB存數(shù)結(jié)構(gòu)
  3. IndexedDB的JS接口設(shè)計詳解
  4. 調(diào)試IndexedDB應(yīng)用程序
  5. 基于Firefox 10的IndexedDB實例演示
責(zé)任編輯:陳貽新 來源: 趙錦江的博客
相關(guān)推薦

2012-02-23 10:32:19

HTML 5

2010-09-03 08:58:01

HTML 5

2011-07-14 09:16:10

HTML 5

2012-01-04 09:42:40

HTML 5

2010-01-29 09:00:48

HTML5 File 文件拖放上傳

2012-11-05 10:34:52

IBMdw

2023-10-07 09:08:32

Golangbufio

2015-10-27 10:22:47

Html5API調(diào)用

2013-01-04 13:39:51

2012-06-04 10:16:18

HTML5

2013-01-18 10:59:44

IBMdW

2011-05-13 17:36:05

HTML

2011-04-11 10:14:47

HTML 5

2011-08-29 10:49:22

2017-08-09 15:57:11

JavaScriptHtml5音頻

2014-08-28 10:16:17

HTML5

2012-05-02 10:28:16

HTML5

2012-05-23 13:00:37

HTML5

2009-08-31 14:01:50

C#創(chuàng)建一個文件

2011-08-09 09:06:43

HTML 5
點贊
收藏

51CTO技術(shù)棧公眾號