【微信小程序】大文件上传

😕之前搞了COS上传,但是没想到费用还不低,特别是播放流量很贵,因此作为毕设不太行,所以来自建FastFDS文件服务器。

miniprogram-file-uploader | 微信开放文档 (qq.com)

这是微信官方的大文件上传解决方案,支持分块上传。

❌由于微信官方提供的分片上传格式是二进制流,后端用multipartfile格式无法接收,所以放弃官方提供的api。

📌解决:自己用file.upload方法进行改写并封装。(每次分片大小不超过10MB)

小程序文件分片 + SpirngBoot FDFS文件服务器分片上传

已经支持的特性:

🌟分片上传

🌟秒传

🌟断点续传


备注:由于是毕设项目,为了保证原创,在我完成毕业后再进行开源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
微信小程序分片上传是指将一个大文件拆分为多个小文件进行上传,可以有效地避免上传过程中因为网络不稳定等原因导致传输失败。 以下是一个简单的微信小程序分片上传示例代码: 1. 在 WXML 中添加上传按钮和进度条: ``` <view class="container"> <button bindtap="chooseFile">选择文件</button> <button bindtap="startUpload">开始上传</button> <progress wx:if="{{progress}}" percent="{{progress}}" show-info stroke-width="2" /> </view> ``` 2. 在 JS 中实现选择文件和开始上传的逻辑: ``` Page({ data: { filePath: '', // 文件路径 progress: null, // 上传进度,百分比 }, chooseFile: function() { wx.chooseMessageFile({ count: 1, type: 'file', success: res => { this.setData({ filePath: res.tempFiles[0].path, }); }, }); }, startUpload: function() { const CHUNK_SIZE = 1024 * 1024; // 分片大小,1MB const file = this.data.filePath; const fileSize = file.size; const chunkCount = Math.ceil(fileSize / CHUNK_SIZE); // 分片数量 let uploadedChunkCount = 0; // 已上传的分片数量 for (let i = 0; i < chunkCount; i++) { const start = i * CHUNK_SIZE; const end = Math.min(start + CHUNK_SIZE, fileSize); const chunkSize = end - start; const chunkData = file.slice(start, end); const formData = { index: i, count: chunkCount, size: fileSize, chunkSize: chunkSize, chunkData: chunkData, }; wx.uploadFile({ url: 'https://example.com/upload', filePath: this.data.filePath, formData: formData, success: res => { uploadedChunkCount++; const progress = Math.round((uploadedChunkCount / chunkCount) * 100); this.setData({ progress: progress, }); }, }); } }, }); ``` 在上面的代码中,我们使用 `wx.chooseMessageFile` 接口选择文件,并在 `startUpload` 方法中将文件分成多个小文件进行上传。上传过程中,我们使用 `wx.uploadFile` 接口上传每个小文件,并在成功回调中更新上传进度。需要注意的是,由于微信小程序上传文件接口的限制,我们不能直接将文件分片后一次性上传,而是需要多次调用 `wx.uploadFile` 接口逐个上传每个分片。 以上是一个简单的微信小程序分片上传示例代码。需要注意的是,上传大文件时可能会遇到网络不稳定、服务器响应慢等问题,因此在实际使用中需要进行适当的错误处理和重试机制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值