HTML5之文件API
问题很简单,做个上传文件的页面。
<!-- multiple代表可上传多个文件 -->
<input type="file" id="file" multiple/>
<input type="button" id="btn" value="上传" />
html页面中简单两行代码就完成基本的文件上传页面。如下图。解决。

/***************************分割线********************/
此时又来了一个新问题:如何获取用户上传的这个文件的文件名、文件大小、文件类型?
var btn = document.getElementById("btn"),
file = document.getElementById("file"),
fileSize = document.getElementById("fileSize"),
fileType = document.getElementById("fileType");
btn.onclick = function() {
fileSize.innerHTML = file.files[0].size; //files是一个数组,指的是第一个文件。
fileType.innerHTML = file.files[0].type; //获取文件名是file.files[0].type
};
效果如下图。解决

这个files就是一个文件集合的数组。他包含四个对象,分别是
- name:该文件的文件名
- size:文件的字节大小。注意是字节。[1kb==1024b(字节),1b == 8bit(比特),1Mb == 1024kb]
- type:文件的类型。(text/html、image/png)
- lastModifiedDate:字符串,文件上一次被修改的时间。(目前只有Chrome支持)
/***************************分割线***************************/
此时又来一个新问题,用户上传了一张图片,并想预览一下?
这里引入一个新类型FileReader。类似于XMLHttpRequest。
这个类型下有5个对象,分别是
readAsText(file,encoding):以纯文本形式(text)读取文件,将读取到的文本保存在 result 属性中。第二个参数用于指定编码类型,是可选的。
readAsDataURL(file):读取文件并将文件以数据 URI 的形式(图片)保存在 result 属性中。
readAsBinaryString(file):读取文件并将一个字符串保存在 result 属性中,字符串中每个字符表示一字节。
readAsArrayBuffer(file):读取文件并将一个包含文件内容的 ArrayBuffer 保存在result 属性中。
abort(): 中断读取文件
还有6个方法,分别是:
onabort 中断触发
onerror 错误触发
onprogress 读取中触发
onload 成功读取后触发
onloadend 无论失败或成功后触发
回归正题。
var btn = document.getElementById("btn"),
file = document.getElementById("file"),
fileSize = document.getElementById("fileSize"),
fileType = document.getElementById("fileType"),
show = document.getElementById("show");
btn.onclick = function() {
// fileSize.innerHTML = file.files[0].size;
// fileType.innerHTML = file.files[0].type;
var reader = new FileReader(); //先new一个对象。
reader.readAsDataURL(file.files[0]); //重要的一步,获取图片内容,图片的内容会保存在reader.result中
reader.onload = function(){
show.innerHTML = '<img src="'+ reader.result + '" alt="这是图片"/>';//页面显示
}
};
<!-- multiple代表可上传多个文件 -->
<input type="file" id="file" multiple/>
<input type="button" id="btn" value="上传" />
<br/>
<!-- <span>文件大小:</span><span id="fileSize"></span><br/>
<span>文件类型:</span><span id="fileType"></span><br/> -->
<div id="show">
</div>
真好看。
同理,还可以读取text文本,n进制文件等。。
HTML5之文件API的更多相关文章
- 第90天:HTML5中文件API和拖放操作
一.文件API File API:提供客户端本地操作文件的可能 multiple是让文件域可以多选 <!DOCTYPE html> <html lang="en" ...
- 用html5文件api实现移动端图片上传&预览效果
想要用h5在移动端实现图片上传&预览效果,首先要了解html5的文件api相关知识(所有api只列举本功能所需): 1.Blob对象 Blob表示原始二进制数据,Html5的file对象就继 ...
- HTML5权威指南--标签新变化,文件API,拖放API(简要学习笔记一)
1.标签元素更加语义化 2.内容类型仍然为“text/html” 扩展符仍然为html或者htm. <1>DOCTYPE 声明<!DOCTYPE html>就可 ...
- HTML5 文件API(一)
1.FileList对象与File对象 2.文件API之Bolb对象 A Blob object represents a file-like object of immutable, raw dat ...
- HTML5实现文件断点续传
HTML5的FILE api,有一个slice方法,可以将BLOB对象进行分割.前端通过FileList对象获取到相应的文件,按照指定的分割方式将大文件分段,然后一段一段地传给后端,后端再按顺序一段段 ...
- [html5+java]文件异步读取及上传核心代码
html5+java 文件异步读取及上传关键代码段 功能: 1.多文件文件拖拽上传,file input 多文件选择 2.html5 File Api 异步FormData,blob上传,图片显示 3 ...
- 【小月博客】用HTML5的File API做上传图片预览功能
前段时间做了一个项目,涉及到上传本地图片以及预览的功能,正好之前了解过 html5(点击查看更多关于web前端的有关资源) 可以上传本地图片,然后再网上看了一些demo结合自己的需求,终于搞定了.(P ...
- Html5大文件断点续传
大文件分块 一般常用的web服务器都有对向服务器端提交数据有大小限制.超过一定大小文件服务器端将返回拒绝信息.当然,web服务器都提供了配置文件可能修改限制的大小.针对iis实现大文件的上传网上也 ...
- HTML5 <Audio/>标签Api整理(二)
1.实例2: 相对较完整 Html代码: <style> #volumeSlider .slider-selection { background:#bababa; } </styl ...
随机推荐
- UI第十九节——UICollectionView
UICollectionView其实就是UITableView的升级版,在布局方面比UITableView更出色.下面,先看代码吧 #import "RootViewController.h ...
- Bootstrap table使用心得
序号显示带分页信息的连续编号,在序号列添加以下格式化代码即可. { field: 'number', title: '序号', align:'center', width:45, formatter: ...
- java基础杂烩
1. int ... arg: 可变参数 2. 数组拷贝放在JDK中的System类中,arraycopy(原数组,从原数组那一个索引开始拷贝,目标数组,在目标数组哪一个位置开始粘贴,拷贝元素的个 ...
- SPOJ FTOUR2 - Free tour II
Description 有些黑点,问你选择不超过 \(k\) 个黑点的路径,路径权值最大是多少. Sol 点分治. 这是qzc的论文题,不过我感觉他的翻译好强啊...我还是选择了自己去看题目... 点 ...
- CentOS6.3 重启后/etc/resolv.conf 被还原解决办法(转)
今天一台服务器上不了网,设置了nameserver,重启后/etc/resolv.conf文件就被自动还原了,最后发现是被Network Manager修改了.解决方法:停止Network Manag ...
- MySQL 5.7 Replication 相关新功能说明
背景: MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等.因为都是和复制相关, ...
- ffmpeg-201612[01,08,10,17,21,27,30]-bin.7z
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 5 屏幕横向放大 20 像素 6 屏幕横向缩小 20 像素 S 下一帧 [ -2秒 ] +2 ...
- Installing Selenium and ChromeDriver on Ubuntu
I recently got Selenium, Google Chrome, and ChromeDriver installed and working on a DigitalOcean ins ...
- 【WEB】web www http html hypermedia hypertext 技术名词的意思
www WWW是环球信息网的缩写,(亦作"Web"."WWW"."'W3'",英文全称为"World Wide Web" ...
- ****Linux MySQL命令运用个人总结
1.xampp在linux下如何使用mysql命令 A: 解决方法(推荐第二个方法): 1.xampp中的命令工具在/opt/lampp/bin/目录中,所以可以这样运行mysql命令 /opt/la ...