最近一直在写小程序,需求上有好些地方用到了图片上传。项目是用了wepy这个小程序框架,跟Vue非常类似,很自然的将这块写成一个公共组件。主要涉及图片选择,实时显示上传的进度,上传到服务器,上传成功后的预览以及从服务器删除图片。
业务需求
需要很明了的显示3个大框框,直接在data中定义了3组数据
data
|
|
html
将数据遍历在每个item上面。
|
|
script
- 图片选择
使用wx.chooseImage API从本地相册选择图片或使用相机拍照,限制其大小为5M。success回调里的tempFilePath可以用于后续图片上传和预览。
|
|
- 图片上传及进度实时显示
使用wx.uploadFile API将图片上传到服务端,通过onProgressUpdate监听图片上传进度变化,改变进度条的宽度。在上述wx.chooseImage的success里继续:
|
|
- 图片预览
图片上传成功后得到带有src的image
我们通过wx.previewImage API进行图片的预览
|
|
- 图片删除
通过服务端约定的接口,将相应的ID传到服务端删除图片。
|
|
与父组件通信
在图片上传成功和删除成功时需要将图片的列表信息发送给父组件,在wepy中通过$emit可以轻松实现。
|
|
总结
至此,一个微信小程序的图片上传相关功能完成。相比其他非小程序生态的图片上传功能,可以说小程序的实现起来相对简单,都有相应的API调用,兼容性也非常友好。
如有错误,还望指正。