Enviar pesquisa
Carregar
File api
•
0 gostou
•
411 visualizações
Tom Fan
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 14
Recomendados
Uc home二次开发参考手册
Uc home二次开发参考手册
charleenchen1990
ch12
ch12
5045033
C语言
C语言
peterlhj
[圣思园][Java SE]Io 1
[圣思园][Java SE]Io 1
ArBing Xie
Linux command tutorial
Linux command tutorial
朋 陈
UC4 SCHEDULING
UC4 SCHEDULING
roelspi
六步教你学会简单Rmi
六步教你学会简单Rmi
yiditushe
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制
Brad Chao
Recomendados
Uc home二次开发参考手册
Uc home二次开发参考手册
charleenchen1990
ch12
ch12
5045033
C语言
C语言
peterlhj
[圣思园][Java SE]Io 1
[圣思园][Java SE]Io 1
ArBing Xie
Linux command tutorial
Linux command tutorial
朋 陈
UC4 SCHEDULING
UC4 SCHEDULING
roelspi
六步教你学会简单Rmi
六步教你学会简单Rmi
yiditushe
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制
Brad Chao
第9章文件
第9章文件
summerfeng
Overlayfs and VFS
Overlayfs and VFS
Hao(Robin) Dong
C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4
Tao He
C語言檔案處理
C語言檔案處理
吳錫修 (ShyiShiou Wu)
Les 3 ppt
Les 3 ppt
gueste832a8e
Uliweb框架思想与编程
Uliweb框架思想与编程
modou li
Les3
Les3
caviar7571
10 檔案說明與處理
10 檔案說明與處理
shademoon
Puppet安装测试
Puppet安装测试
Yiwei Ma
第三方内容开发最佳实践
第三方内容开发最佳实践
taobao.com
Upload attack framework
Upload attack framework
insight-labs
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
Shengyou Fan
第4章 sql server数据库的管理
第4章 sql server数据库的管理
hanmo1988
Drag & drop
Drag & drop
Alibaba Group
Open Api&Sip
Open Api&Sip
cenwenchu
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Jackson Tian
Lucene 全文检索实践
Lucene 全文检索实践
yiditushe
Log4j使用说明
Log4j使用说明
yiditushe
Spring ioc详解
Spring ioc详解
ygj_2008
Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式
ZongYing Lyu
PhoneGap 通信原理和插件系统
PhoneGap 通信原理和插件系统
Tom Fan
HTML5 Web workers
HTML5 Web workers
Tom Fan
Mais conteúdo relacionado
Semelhante a File api
第9章文件
第9章文件
summerfeng
Overlayfs and VFS
Overlayfs and VFS
Hao(Robin) Dong
C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4
Tao He
C語言檔案處理
C語言檔案處理
吳錫修 (ShyiShiou Wu)
Les 3 ppt
Les 3 ppt
gueste832a8e
Uliweb框架思想与编程
Uliweb框架思想与编程
modou li
Les3
Les3
caviar7571
10 檔案說明與處理
10 檔案說明與處理
shademoon
Puppet安装测试
Puppet安装测试
Yiwei Ma
第三方内容开发最佳实践
第三方内容开发最佳实践
taobao.com
Upload attack framework
Upload attack framework
insight-labs
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
Shengyou Fan
第4章 sql server数据库的管理
第4章 sql server数据库的管理
hanmo1988
Drag & drop
Drag & drop
Alibaba Group
Open Api&Sip
Open Api&Sip
cenwenchu
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Jackson Tian
Lucene 全文检索实践
Lucene 全文检索实践
yiditushe
Log4j使用说明
Log4j使用说明
yiditushe
Spring ioc详解
Spring ioc详解
ygj_2008
Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式
ZongYing Lyu
Semelhante a File api
(20)
第9章文件
第9章文件
Overlayfs and VFS
Overlayfs and VFS
C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4
C語言檔案處理
C語言檔案處理
Les 3 ppt
Les 3 ppt
Uliweb框架思想与编程
Uliweb框架思想与编程
Les3
Les3
10 檔案說明與處理
10 檔案說明與處理
Puppet安装测试
Puppet安装测试
第三方内容开发最佳实践
第三方内容开发最佳实践
Upload attack framework
Upload attack framework
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
第4章 sql server数据库的管理
第4章 sql server数据库的管理
Drag & drop
Drag & drop
Open Api&Sip
Open Api&Sip
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Lucene 全文检索实践
Lucene 全文检索实践
Log4j使用说明
Log4j使用说明
Spring ioc详解
Spring ioc详解
Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式
Mais de Tom Fan
PhoneGap 通信原理和插件系统
PhoneGap 通信原理和插件系统
Tom Fan
HTML5 Web workers
HTML5 Web workers
Tom Fan
Web sockets
Web sockets
Tom Fan
Storage
Storage
Tom Fan
Semantics
Semantics
Tom Fan
Multimedia
Multimedia
Tom Fan
Intro to-html5
Intro to-html5
Tom Fan
Html5 history
Html5 history
Tom Fan
Geolocation
Geolocation
Tom Fan
Deviceaccess
Deviceaccess
Tom Fan
Css3
Css3
Tom Fan
Webstorage
Webstorage
Tom Fan
Html5 最重要的部分
Html5 最重要的部分
Tom Fan
AT&T 的 HTML5 策略和应用现状
AT&T 的 HTML5 策略和应用现状
Tom Fan
PhoneGap 2.0 开发
PhoneGap 2.0 开发
Tom Fan
Android 平台 HTML5 应用开发
Android 平台 HTML5 应用开发
Tom Fan
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型
Tom Fan
18 NSUserDefaults
18 NSUserDefaults
Tom Fan
17 Localization
17 Localization
Tom Fan
16 CoreData
16 CoreData
Tom Fan
Mais de Tom Fan
(20)
PhoneGap 通信原理和插件系统
PhoneGap 通信原理和插件系统
HTML5 Web workers
HTML5 Web workers
Web sockets
Web sockets
Storage
Storage
Semantics
Semantics
Multimedia
Multimedia
Intro to-html5
Intro to-html5
Html5 history
Html5 history
Geolocation
Geolocation
Deviceaccess
Deviceaccess
Css3
Css3
Webstorage
Webstorage
Html5 最重要的部分
Html5 最重要的部分
AT&T 的 HTML5 策略和应用现状
AT&T 的 HTML5 策略和应用现状
PhoneGap 2.0 开发
PhoneGap 2.0 开发
Android 平台 HTML5 应用开发
Android 平台 HTML5 应用开发
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型
18 NSUserDefaults
18 NSUserDefaults
17 Localization
17 Localization
16 CoreData
16 CoreData
File api
1.
HTML5 开发 Web,MobileWeb &
Apps 范圣刚 安博中程在线
2.
File API 从 Web
访问文件
3.
介绍 安博中程在线 File API FileReader API Filesystem
& FileWriter API Blob constructing Blob URLs Example 扩展阅读 · · · · · · · 3/14
4.
使用File APIs读取文件 规范提供的从local filesystem
访问文件的几个接口: 安博中程在线 File: 一个单独的文件;提供了诸如文件名,文件大小,mimetype,以及一个到文 件句柄的引用。 FileList: File对象的一个类似数组的序列。(想象一下多文件上传或者直接从桌面系 统拽一个文件夹的情形) Blob: 允许把文件转换成字节数值。 · · · 4/14
5.
检测浏览器对File API的支持情况 方法1: 检测File,
FileReader, FileList, Blob属性是否存在 执行检测执行检测 安博中程在线 <script type='text/javascript'> function supports_fileapi() { // 检查各种File API的支持情况 if (window.File && window.FileReader && window.FileList && window.Blob) { // 所有的File APIs都支持 } else { alert('浏览器对File APIs没有全部支持!'); } } </script> JAVASCRIPT 5/14
6.
使用Input表单元素选择文件 No file chosenChoose
Files 安博中程在线 <input type="file" id="files" name="files[]" multiple /> <output id="list"></output> HTML <script type='text/javascript'> function handleFileSelect(evt) { var files = evt.target.files; var output = []; for (var i=0, f; f = files[i]; i++) { output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') -', f.size, ' 字节, 最后修改: ', f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a', '</li>'); } document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>'; } document.getElementById('files').addEventListener('change', handleFileSelect, false); </script> JAVASCRIPT 6/14
7.
使用拖拽方式选择文件 把文件拖拽到这里 安博中程在线 function handleFileSelect2(evt) { evt.stopPropagation();
evt.preventDefault(); var files = evt.dataTransfer.files; var output = []; for (var i=0, f; f = files[i]; i++) { output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') -', f.size, ' 字节, 最后修改: ', f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a', '</li>'); } document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>'; } function handleDragOver(evt) { evt.stopPropagation(); evt.preventDefault(); evt.dataTransfer.dropEffect = 'copy'; } var dropZone = document.getElementById('drop-zone'); dropZone.addEventListener('dragover', handleDragOver, false); dropZone.addEventListener('drop', handleFileSelect2, false); JAVASCRIPT 7/14
8.
FileReader FileReader包含四种异步读取文件的方式: 一旦这些read方法被调用,onloadstart, onprogress, onload,
onabort, onerror, onloadend就可以被用来 追踪进度。 安博中程在线 FileReader.readAsBinaryString(Blob|File) - result属性包含的是file/blob的二进制字符串形式的数据。每 个字节由一个0-255的整数表示。 FileReader.readAsText(Blob|File, opt_encoding) - result属性包含的是以文本方式表示的file/blob数据。 默认情况下,字符串以'UTF-8'编码方式解码。使用opt_encoding参数可以指定一个不同的格式。 FileReader.readAsDataURL(Blob|File) - result属性包含的是以data URL编码的file/blob数据。 FileReader.readAsArrayBuffer(Blob|File) - result属性包含的是以ArrayBuffer对象表示的file/blob数据。 · · · · 8/14
9.
readAsDataURL Example No file
chosenChoose Files 安博中程在线 function handleFileSelect3(evt) { var files = evt.target.files; for (var i=0, f; f = files[i]; i++) { if (!f.type.match('image.*')) { continue; } var reader = new FileReader(); reader.onload = (function(theFile) { return function(e) { // Render thumnial var span = document.createElement('span'); span.innerHTML = ['<img class="thumb" src="', e.target.result, '" title="', escape(theFile.name), '"/>'].join(''); document.getElementById('thumbnails').insertBefore(span, null); }; })(f); reader.readAsDataURL(f); } } JAVASCRIPT 9/14
10.
文件切片 Slicing File File接口提供了slice方法支持把文件切成不同的片段,第一个参数是起始的字节数,第二个参数是结束的字节 数,还有一个可选的内容类型字符串可以作为第三个参数: 安博中程在线 var blob
= file.slice(startingByte, endingByte); reader.readAsBinary(blob); JAVASCRIPT 10/14
11.
Slice Example No file
chosenChoose File 读取字节数: 1‑801‑80 100‑150100‑150 10‑2010‑20 整个文件整个文件 安博中程在线 function readBlob(opt_startByte, opt_stopByte) { var file = document.getElementById('files4').files[0]; var start = parseInt(opt_startByte) || 0; var stop = parseInt(opt_stopByte) || file.size - 1; var reader = new FileReader(); reader.onloadend = function(evt) { if (evt.target.readyState == FileReader.DONE) { document.getElementById('byte_content').textContent = evt.target.result; document.getElementById('byte_range').textContent = ['Read bytes: ', start + 1, ' - ', stop + 1, ' of ', file.size, ' byte file'].join(''); } }; var blob = file.slice(start, stop + 1); reader.readAsBinaryString(blob); } JAVASCRIPT 11/14
12.
监视文件读取进度 可以使用onloadstart和onprogress事件来监视读取进度 No file chosenChoose
File 停止读取停止读取 安博中程在线 function handleFileSelect5(evt) { reader = new FileReader(); reader.onerror = errorHandler; reader.onprogress = updateProgress; reader.onabort = function(e) { alert('文件读取操作被取消'); }; reader.onloadstart = function(e) { document.getElementById('progress_bar').className = 'loading'; }; reader.onload = function(e) { progress.style.width = '100%'; progress.textContent = '100%'; setTimeout("document.getElementById('progress_bar').className='';", 2000); } reader.readAsBinaryString(evt.target.files[0]); } JAVASCRIPT 12/14
13.
参考 安博中程在线 W3C 规范 -
File W3C 规范 - FileSystem API W3C 规范 - FileWriter W3C 规范 - ProgressEvents W3C 规范 - Drag and Drop Mozilla Hacks: Interactive file uploads MDC: Drag Operations HTML5 Doctor: Native Drag and Drop · · · · · · · · 13/14
14.
<Thank you!> 微博 @范圣刚 博客
www.tfan.org github github.com/princetoad