不会吧!JavaScript 大文件上传切片 @思路 就这么简单吗?

JavaScript 大文件切片

今天看到一个问题:
	前端上传文件很大,如果链接超时了,或者是网络断了,都会导致文件上传失败,这个无疑很消耗资源的
想了想这不就是文件切片吗?
大概说一下思路和代码处理吧!

界面就简单画一下

记录上传  
<progress id="Progressupload"
          value="0">
</progress>
    
 使用标签
            <input type="file" 
            id="Uplodervide" 
            value="选择视频">
 记录信息
        <span id="uploadinfo"></span>
 点击上传 
            <button id="uploadBtn"> 上传视频</button>

思路

​ 我们假设上传一个.mp4文件 大家应该都知道我们上传文件的时候 可以通过下面的代码获取文件

const ouploader = document.getElementById('Uplodervide')
const { files: [file] } = ouploader

我们拿到文件之后打印处理file

会发现里面有一个file.size 属性 记录了文件大小
在此之前先了解一个东西

File API 里面的 FileReader类型里的readAsText,readAsDataURL等方法来读取文件File。但是如果一个文件十分大的时候,或者只需要读取部分内容,如(文本文件),那么我们就可以通过这次介绍的slice方法对文件进行分割成二进制Blob对象。

这时候思路清晰了!

​ 我们定义每一次上传文件的大小,不停去请求上传api,最后将拼接

uploadedSize=0
CHUNK_SIZE=64*1024 (定上传文件的大小)
const fileChunk = file.slice(uploadedSize, uploadedSize + CHUNK_SIZE)
注意:这个地方一定要去记录这个uploadedSize的值
uploadedSize += fileChunk.size

然后再去调用api上传

axios.post(A_URL.UPLOAD_VIDEO, formData)

单文件切片的任务就完成了
@需要代码私我

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yi 拾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值