微信小程序文件上传、下载
微信小程序的附件上传下载。上传后并支持打开
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) }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 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 ,<br> fileType: 'pdf' , success: function (res) { console.log( '打开文档成功' ) } }) } }) }, |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!