外链论坛

 找回密码
 立即注册
搜索
查看: 72|回复: 2

HTML5 进阶系列:文件上传下载

[复制链接]

2818

主题

144

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139939
发表于 2024-6-29 16:30:19 | 显示全部楼层 |阅读模式

前言

HTML5 中供给的文件API在前端中有着丰富的应用,上传、下载、读取内容等在平常的交互中很平常况且在各个浏览器的兼容比较好,包含移动端,除了 IE 只支持 IE10 以上的版本。想要更好地把握好操作文件的功能,先要熟悉每一个API。

FileList 对象和 file 对象

HTML 中的 input[type="file"] 标签有个 multiple 属性,准许用户选取多个文件,FileList对象则便是暗示用户选取的文件列表。这个列表中的每一个文件,便是一个 file 对象。

file 对象的属性:

name : 文件名,不包括路径。

type : 文件类型。照片类型的文件都会以 image/ 开头,能够由此来限制只准许上传照片

size : 文件体积能够按照文件体积来进行其他操作。

lastModified : 文件最后修改的时间。

<input type="file" id="files" multiple> <script> var elem = document.getElementById(files); elem.onchange = function (event) { var files = event.target.files; for (var i = 0; i < files.length; i++) { // 文件类型为 image 并且文件体积少于 200kb if(files[i].type.indexOf(image/) !== -1 && files[i].size < 204800){ console.log(files[i].name); } } } </script>

input 中有个 accept 属性,能够用来规定能够经过文件上传进行提交的文件类型。

accept="image/*" 能够用来限制只准许上传图像格式。然则在 Webkit 浏览器下却显现了响应滞慢的问题,要等上好几秒才弹出文件选取框。

处理办法便是将 * 通配符改为指定的 MIME 类型。

<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png">

Blob 对象

Blob 对象相当于一个容器,能够用于存放二进制数据。它有两个属性,size 属性暗示字节长度,type 属性暗示 MIME 类型。

怎样创建

Blob 对象能够运用 Blob() 构造函数来创建。

var blob = new Blob([hello], {type:"text/plain"});

Blob 构造函数中的第1个参数是一个数组,能够存放 ArrayBuffer对象、ArrayBufferView 对象、Blob对象和字符串。

Blob 对象能够经过 slice() 办法来返回一个新的 Blob 对象。

var newblob = blob.slice(0,5, {type:"text/plain"});

slice() 办法运用三个参数,均为可选。第1个参数表率要从Blob对象中的二进制数据的初始位置起始复制,第二个参数表率复制的结束位置,第三个参数为 Blob 对象的 MIME 类型。

canvas.toBlob() 能够创建 Blob 对象。toBlob() 运用三个参数,第1个为回调函数,第二个为照片类型,默认为 image/png,第三个为照片质量,值在0到1之间。

var canvas = document.getElementById(canvas); canvas.toBlob(function(blob){ console.log(blob); }, "image/jpeg", 0.5);

下载文件

Blod 对象能够经过 window.URL 对象生成一个网络位置,结合 a 标签的 download 属性来实现下载文件功能。

例如把 canvas 下载为一个照片文件。

var canvas = document.getElementById(canvas); canvas.toBlob(
回复

使用道具 举报

2964

主题

1万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109210
发表于 2024-9-28 07:58:41 | 显示全部楼层
请问、你好、求解、谁知道等。
回复

使用道具 举报

2879

主题

1万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109667
发表于 7 天前 | 显示全部楼层
交流如星光璀璨,点亮思想夜空。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-10-18 23:22 , Processed in 0.067408 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.