aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/api/blob
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/api/blob
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/zh-cn/web/api/blob')
-rw-r--r--files/zh-cn/web/api/blob/arraybuffer/index.html66
-rw-r--r--files/zh-cn/web/api/blob/blob/index.html123
-rw-r--r--files/zh-cn/web/api/blob/index.html150
-rw-r--r--files/zh-cn/web/api/blob/size/index.html18
-rw-r--r--files/zh-cn/web/api/blob/slice/index.html117
-rw-r--r--files/zh-cn/web/api/blob/stream/index.html66
-rw-r--r--files/zh-cn/web/api/blob/text/index.html71
-rw-r--r--files/zh-cn/web/api/blob/type/index.html73
8 files changed, 684 insertions, 0 deletions
diff --git a/files/zh-cn/web/api/blob/arraybuffer/index.html b/files/zh-cn/web/api/blob/arraybuffer/index.html
new file mode 100644
index 0000000000..d7a5217065
--- /dev/null
+++ b/files/zh-cn/web/api/blob/arraybuffer/index.html
@@ -0,0 +1,66 @@
+---
+title: Blob.arrayBuffer()
+slug: Web/API/Blob/arrayBuffer
+translation_of: Web/API/Blob/arrayBuffer
+---
+<p>{{APIRef("File API")}}</p>
+
+<p><code><strong>arrayBuffer()</strong></code> 方法返回一个 {{jsxref("Promise")}} 对象,包含 blob 中的数据,并在 {{domxref("ArrayBuffer")}} 中以二进制数据的形式呈现。</p>
+
+<ul>
+</ul>
+
+<h2 id="语法">语法</h2>
+
+<pre class="syntaxbox">var <em>bufferPromise</em> = <em>blob</em>.arrayBuffer();
+
+<em>blob</em>.arrayBuffer().then(<em>buffer</em> =&gt; /* 处理 ArrayBuffer 数据的代码……*/);
+
+var <em>buffer</em> = await <em>blob</em>.arrayBuffer();</pre>
+
+<h3 id="参数">参数</h3>
+
+<p>无须提供任何参数。</p>
+
+<h3 id="返回值">返回值</h3>
+
+<p>返回一个 promise 对象,在 resolved 状态中以二进制的形式包含 blob 中的数据,并呈现在 {{domxref("ArrayBuffer")}} 中。</p>
+
+<h3 id="异常">异常</h3>
+
+<p>当执行这个方法没有提示错误时,那么它可能会出现在 promise 的 reject 状态中。这是可能发生的,比如说在用于获取 blob 数据的一段代码抛出异常的时候。在读取数据时抛出的任何异常都会被放入 reject 状态中。</p>
+
+<h2 id="使用须知">使用须知</h2>
+
+<p>{{domxref("FileReader.readAsArrayBuffer()")}} 这个方法与之类似,但 <code>arrayBuffer()</code> 返回一个 promise 对象,而不是像 <code>FileReader</code> 一样返回一个基于事件的 API。</p>
+
+<h2 id="规范">规范</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ <tr>
+ <td>{{SpecName("File API", "#dom-blob-arraybuffer", "Blob.arrayBuffer()")}}</td>
+ <td>{{Spec2("File API")}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+
+
+<p>{{Compat("api.Blob.arrayBuffer")}}</p>
+
+<h2 id="另见">另见</h2>
+
+<ul>
+ <li>{{domxref("Body.arrayBuffer()")}}</li>
+ <li><a href="/en-US/docs/Web/API/Streams_API">Streams API</a></li>
+ <li>{{domxref("FileReader.readAsArrayBuffer()")}}</li>
+</ul>
diff --git a/files/zh-cn/web/api/blob/blob/index.html b/files/zh-cn/web/api/blob/blob/index.html
new file mode 100644
index 0000000000..481b6a9d82
--- /dev/null
+++ b/files/zh-cn/web/api/blob/blob/index.html
@@ -0,0 +1,123 @@
+---
+title: Blob()
+slug: Web/API/Blob/Blob
+translation_of: Web/API/Blob/Blob
+---
+<p>{{APIRef("File API")}}</p>
+
+<p><code><strong>Blob()</strong></code> 构造函数返回一个新的 {{domxref("Blob")}} 对象。 blob的内容由参数数组中给出的值的串联组成。</p>
+
+<h2 id="语法">语法</h2>
+
+<pre class="syntaxbox">var aBlob = new Blob(<em> array</em>, <em>options</em> );
+</pre>
+
+<h3 id="参数">参数</h3>
+
+<ul>
+ <li><em>array</em> 是一个由{{jsxref("ArrayBuffer")}}, {{domxref("ArrayBufferView")}}, {{domxref("Blob")}}, {{domxref("DOMString")}} 等对象构成的 {{jsxref("Array")}} ,或者其他类似对象的混合体,它将会被放进 {{domxref("Blob")}}。DOMStrings会被编码为UTF-8。</li>
+ <li><em>option</em><em>s</em> 是一个可选的<code>BlobPropertyBag</code>字典,它可能会指定如下两个属性:
+ <ul>
+ <li><code>type</code>,默认值为 <code>""</code>,它代表了将会被放入到blob中的数组内容的MIME类型。</li>
+ <li><code>endings</code>,默认值为<code>"transparent"</code>,用于指定包含行结束符<code>\n</code>的字符串如何被写入。 它是以下两个值中的一个: <code>"native"</code>,代表行结束符会被更改为适合宿主操作系统文件系统的换行符,或者 <code>"transparent"</code>,代表会保持blob中保存的结束符不变 {{non-standard_inline}}</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="示例">示例</h2>
+
+<pre class="brush: js language-js">var aFileParts = ['&lt;a id="a"&gt;&lt;b id="b"&gt;hey!&lt;/b&gt;&lt;/a&gt;']; // 一个包含DOMString的数组
+var oMyBlob = new Blob(aFileParts, {type : 'text/html'}); // 得到 blob</pre>
+
+<h2 id="Specification" name="Specification">标准</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('File API', '#constructorBlob', 'Blob()')}}</td>
+ <td>{{Spec2('File API')}}</td>
+ <td>Initial definition.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+<p>{{CompatibilityTable}}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Feature</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>Basic support</td>
+ <td>20</td>
+ <td>{{CompatGeckoDesktop("13.0")}} [1]</td>
+ <td>10</td>
+ <td>12.10</td>
+ <td>8</td>
+ </tr>
+ <tr>
+ <td>in Workers</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatGeckoDesktop("14.0")}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Feature</th>
+ <th>Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>Basic support</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatGeckoMobile("13.0")}} [1]</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ <tr>
+ <td>in Workers</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatGeckoMobile("14.0")}}</td>
+ <td>{{CompatNo}}</td>
+ <td>{{CompatUnknown}}</td>
+ <td>{{CompatUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>[1] Firefox16之前,如果第二个参数被设置为<code>null</code>或者<code>undefined</code>,会导致错误,不会自动设置为空字典。</p>
+
+<h2 id="参见">参见</h2>
+
+<ul>
+ <li>被本构造函数取代而弃用的{{domxref("BlobBuilder")}}</li>
+</ul>
+
+<p> </p>
diff --git a/files/zh-cn/web/api/blob/index.html b/files/zh-cn/web/api/blob/index.html
new file mode 100644
index 0000000000..8ad418dc2c
--- /dev/null
+++ b/files/zh-cn/web/api/blob/index.html
@@ -0,0 +1,150 @@
+---
+title: Blob
+slug: Web/API/Blob
+tags:
+ - API
+ - Files
+ - Reference
+ - WebAPI
+ - 参考
+ - 文件
+translation_of: Web/API/Blob
+---
+<div>{{APIRef("File API")}}</div>
+
+<p><code>Blob</code><strong> </strong>对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 {{DOMxRef("ReadableStream")}} 来用于数据操作。 </p>
+
+<p>Blob 表示的不一定是JavaScript原生格式的数据。{{domxref("File")}} 接口基于<code>Blob</code>,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。</p>
+
+<p>要从其他非blob对象和数据构造一个 <code>Blob</code>,请使用 {{domxref("Blob.Blob", "Blob()")}} 构造函数。要创建一个 blob 数据的子集 blob,请使用 {{domxref("Blob.slice()", "slice()")}} 方法。要获取用户文件系统上的文件对应的 <code>Blob</code> 对象,请参阅 {{domxref("File", "File")}} 文档。</p>
+
+<p>接受 <code>Blob</code> 对象的API也被列在 {{domxref("File", "File")}} 文档中。</p>
+
+<div class="note"><strong>注意:</strong><code>slice()</code> 方法原本接受 <code>length</code> 作为第二个参数,以表示复制到新 <code>Blob</code> 对象的字节数。如果设置的参数使 <code>start + length</code> 超出了源 <code>Blob</code> 对象的大小,则返回从开始到结尾的所有数据。</div>
+
+<div class="note"><strong>注意:</strong><code>slice()</code> 方法在某些浏览器和版本上带有浏览器引擎前缀:比如 Firefox 12 及更早版本的<code>blob.mozSlice()</code> 和 Safari 中的<code>blob.webkitSlice()</code>。 没有浏览器引擎前缀的老版本 <code>slice()</code> 方法有不同的语义,并且已过时。Firefox 30 取消了对 <code>blob.mozSlice()</code> 的支持。</div>
+
+<h2 id="构造函数">构造函数</h2>
+
+<dl>
+ <dt>{{domxref("Blob.Blob", "Blob(blobParts[, options])")}}</dt>
+ <dd>返回一个新创建的 <code>Blob</code> 对象,其内容由参数中给定的数组串联组成。</dd>
+</dl>
+
+<h2 id="属性">属性</h2>
+
+<dl>
+ <dt>{{domxref("Blob.size")}} {{readonlyinline}}</dt>
+ <dd><code>Blob</code> 对象中所包含数据的大小(字节)。</dd>
+ <dt>{{domxref("Blob.type")}} {{readonlyinline}}</dt>
+ <dd>一个字符串,表明该 <code>Blob</code> 对象所包含数据的 MIME 类型。如果类型未知,则该值为空字符串。</dd>
+</dl>
+
+<h2 id="方法">方法</h2>
+
+<dl>
+ <dt>{{domxref("Blob.slice()", "Blob.slice([start[, end[, contentType]]])")}}</dt>
+ <dd>返回一个新的 <code>Blob</code> 对象,包含了源 <code>Blob</code> 对象中指定范围内的数据。</dd>
+ <dt>{{domxref("Blob.stream()", "Blob.stream()")}}</dt>
+ <dd>返回一个能读取blob内容的 {{domxref("ReadableStream")}}。</dd>
+ <dt>{{domxref("Blob.text()", "Blob.text()")}}</dt>
+ <dd>返回一个promise且包含blob所有内容的UTF-8格式的 {{domxref("USVString")}}。</dd>
+ <dt>{{domxref("Blob.arrayBuffer()", "Blob.arrayBuffer()")}}</dt>
+ <dd>返回一个promise且包含blob所有内容的二进制格式的 {{domxref("ArrayBuffer")}} </dd>
+</dl>
+
+<h2 id="示例">示例</h2>
+
+<h3 id="Blob_构造函数用法举例">Blob 构造函数用法举例</h3>
+
+<p>{{domxref("Blob.Blob", "Blob() 构造函数")}}允许通过其它对象创建 Blob 对象。比如,用字符串构建一个 blob:</p>
+
+<pre class="brush: js notranslate">var debug = {hello: "world"};
+var blob = new Blob([JSON.stringify(debug, null, 2)], {type : 'application/json'});</pre>
+
+<div class="warning">
+<p>{{ domxref("BlobBuilder") }} 接口提供了另外一种创建<code>Blob</code> 对象的方式,但该方式现在已经废弃,不应继续使用:</p>
+
+<pre class="brush: js notranslate">var builder = new BlobBuilder();
+var fileParts = ['&lt;a id="a"&gt;&lt;b id="b"&gt;hey!&lt;/b&gt;&lt;/a&gt;'];
+builder.append(fileParts[0]);
+var myBlob = builder.getBlob('text/xml');
+</pre>
+</div>
+
+<h3 id="示例:使用_Blob_创建一个指向类型化数组的URL">示例:使用 Blob 创建一个指向类型化数组的URL</h3>
+
+<p>参考下面的代码:</p>
+
+<pre class="brush: js notranslate">var typedArray = GetTheTypedArraySomehow();
+var blob = new Blob([typedArray.buffer], {type: 'application/octet-stream'}); // 传入一个合适的 MIME 类型
+var url = URL.createObjectURL(blob);
+// 会产生一个类似 blob:d3958f5c-0777-0845-9dcf-2cb28783acaf 这样的URL字符串
+// 你可以像使用普通 URL 那样使用它,比如用在 img.src 上。
+</pre>
+
+<h3 id="示例:从_Blob_中提取数据">示例:从 Blob 中提取数据</h3>
+
+<p>一种从Blob中读取内容的方法是使用 {{domxref("FileReader")}}。以下代码将 Blob 的内容作为类型数组读取:</p>
+
+<pre class="brush: js notranslate">var reader = new FileReader();
+reader.addEventListener("loadend", function() {
+ // reader.result 包含被转化为类型数组 typed array 的 blob
+});
+reader.readAsArrayBuffer(blob);</pre>
+
+<p>另一种读取Blob中内容的方式是使用Response对象。下述代码将Blob中的内容读取为文本:</p>
+
+<pre class="brush: js notranslate">var text = await (new Response(blob)).text();
+</pre>
+
+<p>通过使用 {{domxref("FileReader")}} 的其它方法可以把 Blob 读取为字符串或者数据URL。</p>
+
+<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','#blob','Blob')}}</td>
+ <td>{{Spec2('File API')}}</td>
+ <td>Initial definition</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+
+
+<p>{{Compat("api.Blob")}}</p>
+
+<p>[1]<a href="http://trac.webkit.org/changeset/55670">WebKit</a> 和 <a href="http://www.opera.com/docs/specs/presto28/file/#blob">Opera 11.10</a> 版本实现的 <code>slice()</code> 使用 <code>length</code> 来作为第二个参数。但是,因为这语法异于 {{jsxref("Array/slice", "Array.slice()")}} 和 {{jsxref("String/slice", "String.slice()")}},WebKit 已经将其移除,并添加了 <a href="http://trac.webkit.org/changeset/83873"><code>Blob.webkitSlice()</code></a> 来支持这个新的语法。</p>
+
+<p>[2] <a href="https://hg.mozilla.org/mozilla-central/rev/1b3947ed93c6">Firefox 4</a> 版本实现的 <code>slice()</code> 使用 <code>length</code>来作为第二个参数。但是,因为这语法异于 {{jsxref("Array/slice", "Array.slice()")}} 和 {{jsxref("String/slice", "String.slice()")}},Gecko 已经将其移除,并添加了 <code>mozSlice()</code> 来支持这个新的语法。</p>
+
+<p>[3] 在Gecko 12.0 {{ geckoRelease("12.0") }} 之前,有个bug会影响 <code>slice()</code> 的行为,就是参数 <code>start</code> 和 <code>end</code> 的值不能超出64位有符号数字范围,现已修复。</p>
+
+<p>[4] 请看 {{bug("1048325")}}。</p>
+
+<h2 id="Gecko_备注:特权许可">Gecko 备注:特权许可</h2>
+
+<p>要使用 chrome 代码,JSM 和 Bootstrap 作用域,你必须像这样导入它:</p>
+
+<pre class="brush: js notranslate">Cu.importGlobalProperties(['Blob']);</pre>
+
+<p><code>Blob</code><font face="Consolas, Liberation Mono, Courier, monospace">可以在</font> Worker 作用域内使用。</p>
+
+<h2 id="相关链接">相关链接</h2>
+
+<ul>
+ <li>{{domxref("BlobBuilder")}}</li>
+ <li>{{domxref("FileReader")}}</li>
+ <li>{{domxref("File")}}</li>
+ <li>{{domxref("URL.createObjectURL")}}</li>
+ <li><a href="/en-US/docs/Components.utils.importGlobalProperties">Components.utils.importGlobalProperties</a></li>
+</ul>
diff --git a/files/zh-cn/web/api/blob/size/index.html b/files/zh-cn/web/api/blob/size/index.html
new file mode 100644
index 0000000000..54ef702af7
--- /dev/null
+++ b/files/zh-cn/web/api/blob/size/index.html
@@ -0,0 +1,18 @@
+---
+title: File.size
+slug: Web/API/Blob/size
+translation_of: Web/API/Blob/size
+---
+<h3 id="概述">概述</h3>
+<p>返回一个File对象所指代的文件的大小,单位为字节。</p>
+<h3 id="例子">例子</h3>
+<pre class="brush:js">// fileInput是一个HTMLInputElement元素: &lt;input type="file" multiple id="myfileinput"&gt;
+var fileInput = document.getElementById("myfileinput");
+// files是一个FileList对象(类似于NodeList)
+var files = fileInput.files;
+for (var i = 0; i &lt; files.length; i++)
+{
+ alert(files[i].name + "文件的大小为 " + files[i].size + " 字节");
+}
+</pre>
+<p>{{ languages( {"en": "en/DOM/File.size" } ) }}</p>
diff --git a/files/zh-cn/web/api/blob/slice/index.html b/files/zh-cn/web/api/blob/slice/index.html
new file mode 100644
index 0000000000..7b0dff2d4d
--- /dev/null
+++ b/files/zh-cn/web/api/blob/slice/index.html
@@ -0,0 +1,117 @@
+---
+title: Blob.slice
+slug: Web/API/Blob/slice
+translation_of: Web/API/Blob/slice
+---
+<p>{{APIRef("File API")}}</p>
+
+<p><strong><code>Blob.slice() </code></strong>方法用于创建一个包含源 {{domxref("Blob")}}的指定字节范围内的数据的新 {{domxref("Blob")}} 对象。</p>
+
+<div class="note"><strong>注释:</strong> 请注意, 在某些浏览器和版本上具有供应商前缀:例如:Firefox 12及更早版本的blob.mozSlice() 和 Safari中的 blob.webkitSlice(). slice() 方法的旧版本,没有供应商前缀,具有不同的语义,并且已过时。</div>
+
+<h2 id="语法">语法</h2>
+
+<pre>var blob = instanceOfBlob.slice([start [, end [, contentType]]]};</pre>
+
+<h3 id="参数">参数</h3>
+
+<dl>
+ <dt><code>start</code> {{ optional_inline() }}</dt>
+ <dd>这个参数代表 {{domxref("Blob")}} 里的下标,表示第一个会被会被拷贝进新的 {{domxref("Blob")}} 的字节的起始位置。如果你传入的是一个负数,那么这个偏移量将会从数据的末尾从后到前开始计算。举例来说, -10 将会是  {{domxref("Blob")}} 的倒数第十个字节。它的默认值是0, 如果你传入的<span style="font-family: 'Courier New','Andale Mono',monospace; line-height: normal;">start的长度大于源 </span><span style="line-height: 1.5;">{{domxref("Blob")}} 的长度,那么返回的</span><span style="line-height: 1.5;">将会是一个长度为0并且不包含任何数据的一个 </span><span style="line-height: 1.5;">{{domxref("Blob")}} 对象。</span></dd>
+ <dt><code>end</code> {{ optional_inline() }}</dt>
+ <dd>这个参数代表的是 {{domxref("Blob")}} 的一个下标,这个下标-1的对应的字节将会是被拷贝进新的{{domxref("Blob")}} 的最后一个字节。如果你传入了一个负数,那么这个偏移量将会从数据的末尾从后到前开始计算。举例来说, -10 将会是 {{domxref("Blob")}} 的倒数第十个字节。它的默认值就是它的原始长度(<code>size</code>).</dd>
+ <dt><code>contentType</code> {{ optional_inline() }}</dt>
+ <dd>给新的 {{domxref("Blob")}} 赋予一个新的文档类型。这将会把它的 <span style="font-family: 'Courier New','Andale Mono',monospace; line-height: normal;">type 属性设为被传入的值。它的默认值是一个空的字符串。</span></dd>
+</dl>
+
+<h3 id="返回值">返回值</h3>
+
+<p>一个新的 {{domxref("Blob")}} 对象,它包含了原始 {{domxref("Blob")}} 对象的某一个段的数据。</p>
+
+<h2 id="Browser_Compatibility" name="Browser_Compatibility">规范</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-slice','slice')}}</td>
+ <td>{{Spec2('File API')}}</td>
+ <td>Initial definition.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">浏览器兼容</h2>
+
+<p>{{ CompatibilityTable() }}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>功能</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari (WebKit)</th>
+ </tr>
+ <tr>
+ <td>基本支持</td>
+ <td>10 {{property_prefix("webkit")}}‡<br>
+ 21</td>
+ <td>5 {{ property_prefix("moz") }}‡<br>
+ 13</td>
+ <td>10</td>
+ <td>12</td>
+ <td>5.1 (<a class="external" href="http://trac.webkit.org/changeset/83873">534.29</a>) {{ property_prefix("webkit") }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>功能</th>
+ <th>Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Phone</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>基本支持</td>
+ <td>{{ CompatUnknown() }}</td>
+ <td>{{ CompatGeckoMobile("13.0") }}</td>
+ <td>{{ CompatUnknown() }}</td>
+ <td>{{ CompatUnknown() }}</td>
+ <td>{{ CompatUnknown() }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h3 id="实现_slice_的一些声明">实现 slice() 的一些声明</h3>
+
+<p><code>slice()</code> 方法第二个参数的默认值将会传入原始 Blob 的长度。 如果你在调用的时候传入的 <span style="font-family: 'Courier New','Andale Mono',monospace; line-height: normal;">start + length</span> 超出了原始 <span style="font-family: 'Courier New','Andale Mono',monospace; line-height: normal;">Blob</span> 的长度,那么返回的 <span style="font-family: 'Courier New','Andale Mono',monospace; line-height: normal;">Blob </span> 对象将会包含从 start 到原始数据的末尾。</p>
+
+<p>那个版本的 slice() 在 <a class="link-https" href="https://hg.mozilla.org/mozilla-central/rev/1b3947ed93c6" style="line-height: 1.5;">Firefox 4</a>、<span style="line-height: 1.5;"> </span><a class="external" href="http://trac.webkit.org/changeset/55670" style="line-height: 1.5;">WebKit</a> 和 <a class="external" href="http://www.opera.com/docs/specs/presto28/file/#blob" style="line-height: 1.5;">Opera 11.10</a> 中实现了。但是它的语法和 Array.slice() 以及 String.slice() 有所出入,所以 Gecko 和 Webkit 移除掉了它的支持并且加上了新语法的支持 <span style="line-height: 1.5;"> </span><span style="line-height: 1.5;">{{ manch("mozSlice") }}/</span><code style="line-height: 1.5; font-size: 14px;"><a class="external" href="http://trac.webkit.org/changeset/83873" style="line-height: 1.5;">Blob.webkitSlice</a>。</code></p>
+
+<p>从 Gecko 13.0 {{ geckoRelease("13.0") }} 和 Chrome 21 开始, {{ manch("slice") }} 就再也没有浏览器前缀了。</p>
+
+<h3 id="Gecko_notes">Gecko notes</h3>
+
+<p>在先前的 Gecko 12.0 {{ geckoRelease("12.0") }}, 有一个 bug 会影响到 {{ manch("slice") }} 的行为; 他在 <code>start</code> 和 end 位置组成的范围超出 signed 64-bit 值的范围的时候不工作; 这个问题已经被解决,现在支持传入 unsigned 64-bit 值.</p>
+
+<h2 id="参见">参见</h2>
+
+<ul>
+ <li>{{domxref("Blob")}}</li>
+ <li>{{domxref("BlobBuilder")}}</li>
+</ul>
diff --git a/files/zh-cn/web/api/blob/stream/index.html b/files/zh-cn/web/api/blob/stream/index.html
new file mode 100644
index 0000000000..c14f5faa1c
--- /dev/null
+++ b/files/zh-cn/web/api/blob/stream/index.html
@@ -0,0 +1,66 @@
+---
+title: Blob.stream()
+slug: Web/API/Blob/stream
+tags:
+ - API
+ - Blob
+ - stream
+ - 文件读写
+translation_of: Web/API/Blob/stream
+---
+<p>{{APIRef("File API")}}</p>
+
+<p><span class="seoSummary">{{domxref("Blob")}}接口的<code><strong>stream()</strong></code> 方法返回一个{{domxref("ReadableStream")}}对象,读取它将返回包含在<code>Blob</code>中的数据。</span></p>
+
+<h2 id="语法">语法</h2>
+
+<pre class="syntaxbox">var <em>stream</em> = <em>blob</em>.stream();</pre>
+
+<h3 id="参数">参数</h3>
+
+<p>无。</p>
+
+<h3 id="返回值">返回值</h3>
+
+<p>一个{{domxref("ReadableStream")}}对象,读取后返回 <code>Blob</code>的内容。</p>
+
+<h2 id="使用说明">使用说明</h2>
+
+<p>使用 <code>stream()</code> 函数与其返回的{{domxref("ReadableStream")}}对象,你将得到一些有趣的能力:</p>
+
+<ul>
+ <li>调用方法{{domxref("ReadableStream.getReader", "getReader()")}},在返回的stream上获取一个对象,通过{{domxref("ReadableStreamDefaultReader")}}接口提供的{{domxref("ReadableStreamDefaultReader.read", "read()")}}方法读取blob对象的方法。</li>
+ <li>调用返回stream对象的{{domxref("ReadableStream.pipeTo", "pipeTo()")}}方法将blob对象的数据传输到可写流。</li>
+ <li>调用返回stream对象的{{domxref("ReadableStream.tee", "tee()")}}方法以准备可读流。该方法会返回一个数组,该数组包含两个新的 <code>ReadableStream</code> 对象,每个对象都会返回 <code>Blob</code>的内容。</li>
+ <li>调用返回stream对象的{{domxref("ReadableStream.pipeThrough", "pipeThrough()")}}方法,通过一个{{domxref("TransformStream")}}对象或其它任意可读可写对传输流对象。</li>
+</ul>
+
+<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", "#dom-blob-stream", "Blob.stream()")}}</td>
+ <td>{{Spec2("File API")}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+
+
+<p>{{Compat("api.Blob.stream")}}</p>
+
+<h2 id="另请参阅">另请参阅</h2>
+
+<ul>
+ <li>{{domxref("Body.body")}}</li>
+ <li><a href="/en-US/docs/Web/API/Streams_API">Streams API</a></li>
+</ul>
diff --git a/files/zh-cn/web/api/blob/text/index.html b/files/zh-cn/web/api/blob/text/index.html
new file mode 100644
index 0000000000..45df1aa79b
--- /dev/null
+++ b/files/zh-cn/web/api/blob/text/index.html
@@ -0,0 +1,71 @@
+---
+title: Blob.text()
+slug: Web/API/Blob/text
+tags:
+ - 数据
+ - 文本
+translation_of: Web/API/Blob/text
+---
+<div>{{APIRef("File API")}}</div>
+
+<p><span class="seoSummary"><code><strong>text()</strong></code> 方法返回一个 {{jsxref("Promise")}} 对象,包含 blob 中的内容,使用 UTF-8 格式编码。</span></p>
+
+<ul>
+</ul>
+
+<h2 id="语法">语法</h2>
+
+<pre class="brush: js">var <em>textPromise</em> = <em>blob</em>.text();
+
+<em>blob</em>.text().then(<em>text</em> =&gt; /* 执行的操作…… */);
+
+var <em>text</em> = await <em>blob</em>.text();
+</pre>
+
+<h3 id="参数">参数</h3>
+
+<p>无须提供任何参数。</p>
+
+<h3 id="返回值">返回值</h3>
+
+<p>返回一个 promise 对象,以 resolve 状态返回一个以文本形式包含 blob 中数据的 {{domxref("USVString")}}。并且该数据<strong>总是</strong>被识别为 UTF-8 格式。</p>
+
+<h2 id="使用须知">使用须知</h2>
+
+<p>{{domxref("FileReader")}} 的 {{domxref("FileReader.readAsText", "readAsText()")}} 方法是一个与之类似的方法,它对 <code>Blob</code> 和 {{domxref("File")}} 对象都适用。下面是两个主要的不同之处:</p>
+
+<ul>
+ <li><code>Blob.text()</code> 返回的是一个 promise 对象,而 <code>FileReader.readAsText()</code> 是一个基于事件的 API。</li>
+ <li><code>Blob.text()</code> 总是使用 UTF-8 进行编码,而 <code>FileReader.readAsText()</code> 可以使用不同编码方式,取决于 blob 的类型和一个指定的编码名称。</li>
+</ul>
+
+<h2 id="规范">规范</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ <tr>
+ <td>{{SpecName("File API", "#dom-blob-text", "Blob.text()")}}</td>
+ <td>{{Spec2("File API")}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+
+
+<p>{{Compat("api.Blob.text")}}</p>
+
+<h2 id="另见">另见</h2>
+
+<ul>
+ <li>{{domxref("Body.text()")}}</li>
+ <li><a href="/en-US/docs/Web/API/Streams_API">Streams API</a></li>
+ <li>{{domxref("FileReader.readAsText()")}}</li>
+</ul>
diff --git a/files/zh-cn/web/api/blob/type/index.html b/files/zh-cn/web/api/blob/type/index.html
new file mode 100644
index 0000000000..a06399628c
--- /dev/null
+++ b/files/zh-cn/web/api/blob/type/index.html
@@ -0,0 +1,73 @@
+---
+title: Blob.type
+slug: Web/API/Blob/type
+tags:
+ - API
+ - DOM
+ - File
+ - Files
+ - 参考
+ - 属性
+ - 文件
+translation_of: Web/API/Blob/type
+---
+<div>{{APIRef("File API")}}</div>
+
+<p><a href="/zh-CN/docs/Web/API/Blob"><code>Blob</code></a> 对象的 <strong><code>type</code></strong> 属性给出文件的 <a href="/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types">MIME 类型</a>。如果类型无法确定,则返回空字符串。</p>
+
+<h3 id="语法">语法</h3>
+
+<pre class="syntaxbox">var mimetype = <var>instanceOfFile</var>.type</pre>
+
+<h3 id="值">值</h3>
+
+<p>字符串</p>
+
+<h3 id="例子">例子</h3>
+
+<pre class="brush:js">// fileInput是一个 HTMLInputElement,HTML Input 元素: &lt;input type="file" multiple id="myfileinput"&gt;
+var fileInput = document.getElementById("myfileinput");
+
+// files 是一个 FileList 对象(与 NodeList 相似,是多个 File 对象的集合)
+var files = fileInput.files;
+
+// 仅允许 *.png, *.jpeg *.gif 类型的图片文件
+var allowedFileTypes = ["image/png", "image/jpeg", "image/gif"];
+
+for (var i = 0; i &lt; files.length; i++) {
+ // 检查文件的文件类型是否属于 allowFileTypes 中的一种
+ if (allowedFileTypes.indexOf(files[i].type) &gt; -1) {
+ // 对符合条件的文件进行处理
+ }
+}</pre>
+
+<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-type', 'type')}}</td>
+ <td>{{Spec2('File API')}}</td>
+ <td>Initial definition.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+<div>
+
+
+<p>{{Compat("api.Blob.type")}}</p>
+</div>
+
+<h2 id="参见">参见</h2>
+
+<ul>
+ <li>{{domxref("Blob")}}</li>
+</ul>