blob: 6bf3eb6ef4eb30f2df7b5c4a0e29f7b37ba39178 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
---
title: FileReader
slug: Web/API/FileReader
tags:
- API
- File API
- Files
- Interface
- Reference
translation_of: Web/API/FileReader
---
<div>{{APIRef("File API")}}</div>
<p>藉由 <code>FileReader</code> 物件,Web 應用程式能以非同步(asynchronously)方式讀取儲存在用戶端的檔案(或原始資料暫存)內容,可以使用 {{domxref("File")}} 或 {{domxref("Blob")}} 物件指定要讀取的資料。</p>
<p>File 物件可以從使用者於 {{HTMLElement("input")}} 元素選擇之檔案所回傳的 {{domxref("FileList")}} 物件當中取得,或是來自<a href="/docs/Web/Guide/HTML/Drag_and_drop">拖放操作</a>所產生的 {{domxref("DataTransfer")}} 物件之中,也能由 {{domxref("HTMLCanvasElement")}} 物件(元素物件)執行 <code>mozGetAsFile()</code> 方法後回傳。</p>
<p>{{AvailableInWorkers}}</p>
<h2 id="建構式">建構式</h2>
<dl>
<dt>{{domxref("FileReader.FileReader", "FileReader()")}}</dt>
<dd>建立新的 <code>FileReader</code> 物件。</dd>
</dl>
<p>請參考<a href="/docs/Using_files_from_web_applications">在網頁應用程式中使用本地檔案</a>的更多細節與範例。</p>
<h2 id="屬性">屬性</h2>
<dl>
<dt>{{domxref("FileReader.error")}} {{readonlyinline}}</dt>
<dd>此 {{domxref("DOMException")}} 類型的物件記錄了讀取資料時發生的錯誤資訊。</dd>
<dt>{{domxref("FileReader.readyState")}} {{readonlyinline}}</dt>
<dd>表示目前 <code>FileReader</code> 狀態的數字,其代表的意義為:
<table class="standard-table">
<tbody>
<tr>
<td><code>EMPTY</code></td>
<td><code>0</code></td>
<td>尚未讀入任何資料。</td>
</tr>
<tr>
<td><code>LOADING</code></td>
<td><code>1</code></td>
<td>正在讀入資料。</td>
</tr>
<tr>
<td><code>DONE</code></td>
<td><code>2</code></td>
<td>完成資料讀取。</td>
</tr>
</tbody>
</table>
</dd>
<dt>{{domxref("FileReader.result")}} {{readonlyinline}}</dt>
<dd>讀入的資料內容。只有在讀取完成之後此屬性才有效,而資料的格式則取決於是由哪一個方法進行讀取。</dd>
</dl>
<h3 id="事件處理器">事件處理器</h3>
<dl>
<dt>{{domxref("FileReader.onabort")}}</dt>
<dd>{{event("abort")}} 事件處理器,於讀取被中斷時觸發。</dd>
<dt>{{domxref("FileReader.onerror")}}</dt>
<dd>{{event("error")}} 事件處理器,於讀取發生錯誤時觸發。</dd>
<dt>{{domxref("FileReader.onload")}}</dt>
<dd>{{event("load")}} 事件處理器,於讀取完成時觸發。</dd>
<dt>{{domxref("FileReader.onloadstart")}}</dt>
<dd>{{event("loadstart")}} 事件處理器,於讀取開始時觸發。</dd>
<dt>{{domxref("FileReader.onloadend")}}</dt>
<dd>{{event("loadend")}} 事件處理器,於每一次讀取結束之後觸發(不論成功或失敗),會於 <code>onload</code> 或 <code>onerror</code> 事件處理器之後才執行。</dd>
<dt>{{domxref("FileReader.onprogress")}}</dt>
<dd>{{event("progress")}} 事件處理器,於讀取 {{domxref("Blob")}} 內容時觸發。</dd>
</dl>
<div class="note">
<p><code>FileReader</code> 物件繼承自 {{domxref("EventTarget")}},其所有的事件也都能夠透過 {{domxref("EventTarget.addEventListener()","addEventListener")}} 方法來註冊事件監聽器。</p>
</div>
<h2 id="方法">方法</h2>
<dl>
<dt>{{domxref("FileReader.abort()")}}</dt>
<dd>中斷目前的讀取,此方法回傳後屬性 <code>readyState</code> 將會是 <code>DONE</code>。</dd>
<dt>{{domxref("FileReader.readAsArrayBuffer()")}} {{gecko_minversion_inline("7.0")}}</dt>
<dd>開始讀取指定的 {{domxref("Blob")}},讀取完成後屬性 <code>result</code> 將以 {{domxref("ArrayBuffer")}} 物件來表示讀入的資料內容。</dd>
<dt>{{domxref("FileReader.readAsBinaryString()")}} {{non-standard_inline}}</dt>
<dd>開始讀取指定的 {{domxref("Blob")}},讀取完成後屬性 <code>result</code> 將以字串型式來表示讀入的原始二進位資料(raw binary data)。</dd>
<dt>{{domxref("FileReader.readAsDataURL()")}}</dt>
<dd>開始讀取指定的 {{domxref("Blob")}},讀取完成後屬性 <code>result</code> 將以 <code>data:</code> URL 格式(base64 編碼)的字串來表示讀入的資料內容。</dd>
<dt>{{domxref("FileReader.readAsText()")}}</dt>
<dd>開始讀取指定的 {{domxref("Blob")}},讀取完成後屬性 <code>result</code> 將以文字字串型式來表示讀入的資料內容。</dd>
</dl>
<h2 id="規範">規範</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">規範</th>
<th scope="col">狀態</th>
<th scope="col">註解</th>
</tr>
<tr>
<td>{{SpecName("File API", "#dfn-filereader", "FileReader")}}</td>
<td>{{Spec2("File API")}}</td>
<td>Initial definition</td>
</tr>
</tbody>
</table>
<h2 id="瀏覽器相容性">瀏覽器相容性</h2>
{{Compat("api.FileReader")}}
<h2 id="參見">參見</h2>
<ul>
<li><a href="/docs/Using_files_from_web_applications">在網頁應用程式中使用本地檔案</a></li>
<li>{{domxref("File")}}</li>
<li>{{domxref("Blob")}}</li>
</ul>
|