微信小程序文件上传、下载
微信小程序的附件上传下载。上传后并支持打开

1、wxml 定义
<view> <van-uploader class="autoField" bind:after-read="afterRead" accept="file" upload-text="上传附件" max-count="6" disabled="{{pageType !== 'add'}}" > <text class="labelText" user-solt="label"> 上传附件</text> <van-button class="uploadButton" icon="upgrade" plain type="primary" size="small" >上传文件 </van-button> </van-uploader> <view class="fileListBox"> <view class="fileList"> <text class="file" slot="button" size="small" type="default" wx:for="{{ fileList }}" wx:key="fileName" title="{{item.fileName}}" data-fileName="{{item.fileName}}" data-filePath="{{item.filePath}}" bind:tap="handleDownloadFile" > {{item.fileName}} </text> </view> </view> </view>
2、js方法定义
export const getToken = () => { return wx.getStorageSync(tokenKey) }
afterRead(event) {
const { file } = event.detail;
const _this = this
const header = {
'content-type': 'application/json;charset=utf-8;',
}
if (getToken()) {
header[tokenKey] = getToken()
}
// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
wx.uploadFile({
url: getApp().globalData.baseURL + '/common/sysFile/uploadWx', // 仅为示例,非真实的接口地址
filePath: file.url,
name: 'file',
header,
formData: { "biz": 'gxjw', "fileName": file.name, "fileSourceId": this.data.temp.id || '', "fileType": '1' }, // filesourceId 就是member的id
success(res) {
console.log(res)
// 上传完成需要更新 fileList
let fileList = _this.data.fileList;
file.fileName = file.name || ''
file.filePath = JSON.parse(res.data).message || ''
// fileList.push({ ...file, url: res.data });
fileList.push({ ...file });
console.log(9999, fileList, file)
_this.setData({ fileList });
},
});
},
handleDownloadFile(e) {
let data = e.currentTarget.dataset
let url = data.filepath //this.data.pageType === 'add' ? JSON.parse(data.url).message : data.filepath
const header = {
'content-type': 'application/json;charset=utf-8;',
}
if (getToken()) {
header[tokenKey] = getToken()
}
const newPath = `${wx.env.USER_DATA_PATH}/${url}`;
console.log(99999, url)
wx.downloadFile({
// 示例 url,并非真实存在
url: getApp().globalData.baseURL + '/' + url, // 仅为示例,非真实的接口地址 'http://example.com/somefile.pdf',
filePath: newPath,
header,
timeout: 10000,
success: function (res) {
wx.openDocument({
filePath: newPath,
showMenu: true,
fileType: 'pdf',
success: function (res) {
console.log('打开文档成功')
}
})
}
})
},

浙公网安备 33010602011771号