微信小程序image组件和Audio组件支持云存储中的FileID

本文分享了在云存储中使用图片和音频的新方法,即直接利用FileID而非下载链接,这一技巧适用于微信小程序的image和audio组件,提高了资源加载效率。
### 封装微信小程序中的图片上传功能 在微信小程序开发中,为了提高代码的可读性复用性,通常会对图片上传的功能进行封装。这不仅简化了后续调用过程,也便于后期维护扩展。 #### 需求分析与设计思路 对于图片上传的需求,主要考虑以下几个方面: - 支持多张图片的选择与预览 - 对每一张选中的图片执行压缩处理(如果必要) - 使用云存储服务或自定义服务器接口完成文件传输 - 提供进度反馈机制给用户 - 处理可能发生的错误情况并给予适当提示 基于上述需求,在设计上可以采用面向对象的方式创建一个`Uploader`类来管理整个流程[^1]。 #### 实现方案 下面展示了一个简单的实现方式,通过JavaScript实现了基本的照片选取以及上传操作,并利用Promise模式优化异步编程体验。 ```javascript // utils/uploader.js 文件内容如下: const Uploader = { chooseImage() { return new Promise((resolve, reject) => { wx.chooseImage({ count: 9, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success(res){ resolve(res.tempFilePaths); }, fail(err){ console.error('choose image failed:', err); reject(err.errMsg || "选择失败"); } }); }) }, uploadFile(filePath) { const cloudPath = `${Date.now()}-${Math.floor(Math.random()*10e5)}.jpg`; return new Promise((resolve,reject)=>{ wx.cloud.uploadFile({ cloudPath, filePath, success:(res)=>{resolve({id: res.fileID})}, fail:(err)=>{console.log(`upload error:${JSON.stringify(err)}`);reject()} }) }) } } module.exports = Uploader; ``` 此段代码首先定义了一个名为 `Uploader` 的对象,其中包含了两个方法:一个是用于让用户挑选照片的方法 `chooseImage()` ,另一个则是负责把选定好的本地路径转换成端地址的方法 `uploadFile()` 。这两个函数都返回Promises实例以便于链式调用来控制程序流。 接下来是在页面组件里使用这些工具的例子: ```html <!-- pages/index.wxml --> <button bindtap="handleUpload">点击上传</button> <view class="preview"> <block wx:for="{{imageUrls}}" wx:key="*this"> <image src="{{item}}"></image> </block> </view> ``` ```javascript // pages/index.js Page({ data:{ imageUrls:[] }, handleUpload:async function(){ try{ let tempFiles=await uploader.chooseImage(); this.setData({imageUrls:tempFiles}); for(let i=0;i<tempFiles.length;i++){ await uploader.uploadFile(tempFiles[i]); // 可在此处加入成功后的逻辑... } }catch(e){ wx.showToast({ title:e, icon:'none' }) } } }) ``` 这段WXML模板描述了一组按钮容器结构;而对应的JS部分则展示了如何监听用户的交互事件触发上传动作,同时更新视图状态显示已加载成功的图像列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SOC罗三炮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值