微信小程序开发的过程中遇到文件预览下载转发的相关需求,然后做了一些封装,针对小程序遇到一些bug和问题做一下记录
一、预览相关:
关于预览视频和图片的时候有多种api, wx.previewMedia这个可以同时支持图片和视频预览,个人感觉单纯小程序的话,和适合做预览.不过**缺点是不支持企业微信**
,因为遇到的需求是需要在企业微信小程序里预览等,所以舍弃此方法
图片预览用的:**wx.previewImage**
;
视频因为不支持在企业微信,故而取消此功能;
文件预览用的:** wx.openDocument**
打开文档预览;
二、下载相关:
关于下载也分为下载文档,图片,视频;
下载遇到的问题是在安卓真机测试下载的文件经过时间戳处理,文件名在手机中层级较深也很难找,在ios没有反应;然后用了折中的方案,就是长按转发给好友来实现保存;
然后用文件流结合以下
const fs = wx.getFileSystemManager();
图片下载用的:**wx.saveImageToPhotosAlbum**
;
视频下载用的**wx.saveVideoToPhotosAlbum**
;
文件下载**fs.saveFile**
;
二、根据需求封装了以下功能
let {
base_url} = require('./request')
function downloadFile(data={
},format,isPreview=true,urlFlag=true) {
let url = ''
if(urlFlag==true){
url = '/common/download'
}else if(urlFlag==false){
url = '/common/wxDownload'
}else{
url = '/wx/box_info/downLoadBoxFile'
}
if(isPreview) wx.showLoading({
title: '正在打开文件…'})
// else
if(url=='/common/wxDownload'){
wx.showLoading({
title: '正在发送…'})
let urles = base_url + url;
wx.$http.get(urles,data).then(res => {
wx.hideLoading()
if(res.code==200){
wx.showToast({
title: res.msg,
icon: 'none',
duration: 2000//持续的时间
})
}else{
wx.showToast({
title: '请稍后刷新重试',
icon: 'none',
duration: 2000//持续的时间
})
}
}).catch((error)=>{
wx.hideLoading()
wx.showToast({
title: '发送失败,请稍后再试',
icon: 'none',
duration: 2000//持续的时间
})
})
}else{
wx.showLoading({
title: '正在加载文件…'})
wx.request({
url: base_url + url,
header: {
"content-type": "application/json"