刚开始学习前端开发就碰到文件上传问题,还要求可断点续传。查了很多资料,发现h5的file api刚好可以满足我们的需求,也遇到了一些问题,于是记录下来为有同样需求的朋友提供一些帮助。
一、首先,为了引入文件对象,需要在h5页面上放置一个file类型的输入标签。
<input type="file" onchange="fileinfo()">
当选择文件之后显示文件相关信息:
function fileinfo() {
let fileobj = document.getelementbyid('file').files[0];
console.log(fileobj);
}
我们获取到的对象本身是一个数组,这里只选择了一个文件,需要选择多个文件可在input标签添加multiple属性。现在我们打开浏览器控制台可以看到输出了文件的最后修改时间、文件大小和文件名等信息:
// 上传一块完成后修改进度条信息,然后上传下一块
document.getelementbyid('progress').value = end;
upload(end);
然后打开浏览器,在上传过程中故意关闭浏览器下次再选择同一文件时即可从断点位置开始续传。
四、虽然已经实现了可断点续传的文件上传功能,但是界面还需要美化一下,这里引用bootstrap框架,需要jquery,顺便用jquery的ajax代替原生js的ajax,需要注意的是$.ajax的processdata和contenttype属性都要设置成false:
// post表单数据
$.ajax({
url: 'upload.php',
type: 'post',
data: fd,
processdata: false,
contenttype: false,
success: function() {
upload(end);
}
});
最后美化完成的效果图如下:
推荐教程:《js教程》
电脑中怎样给Word2010页面添加编辑限制保护云服务器配置外网访问阿里云虚拟主机改成ecs服务器为什么阿里云ecs服务器一直显示待认证中这种会失败什么样的网页设计才是最好的续费不成功-域名及账户问题云服务器怎么改时间限制