小程序实现上传文件跟预览文件

小程序实现上传文件跟预览文件

上一篇文件整理了PC端后管的文件预览,产品姐姐这时候就问了句,不通过后管,只通过小程序能不能做到上传文件跟预览呢?我研究了一下发现是可行的,并且不难,这里整理出来了希望对一些刚入门的小白有所帮助

小程序上传附件(pdf,docx,xlsx)

诸多API的详情可以参考小程序官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/

小程序上传我们可以写一个点击事件,调用wx.chooseMessageFile从客户端会话选择文件,然后在success回调里面调用wx.uploadFile上传API,这里的url就是你需要上传的地址,header是请求头,success回调的e就有上传后的路径啦!

// 核心JS
uploadFile(){
    wx.chooseMessageFile({
      count: 1, // 最多可以选择的文件个数,可以 0~100
      type: 'file', // 	所选的文件的类型
     success(res){
        const { tempFilePaths } = res // 返回选择的文件的本地临时文件对象数组
        const index = tempFilePaths[0].path.lastIndexOf('.')
        const urlSuffix = tempFilePaths[0].path.slice(index)
        const filename = `cms/files/${uuid()}${urlSuffix}`;
        wx.uploadFile({
           filePath: tempFilePaths[0].path,
           url: '', // 服务器地址
           name: 'file',
           header: {}, // 按需
           formData: {
            token: that.token, // 上传地址的token
            file: filename, // 文件名
            key: filename, // key
           },
           success(res1){
             const data = JSON.parse(res1.data)
              console.log('data Success', data)
           }
        })
     }
    })
}

小程序预览文件(doc,docx,xls,xlsx,ppt,pptx,pdf)

上传完成了,接下来就是在线预览,写一个点击事件,调用微信官方API wx.openDocument即可,但是wx.openDocument的filePath是需要本地路径的,我们要先调用wx.downloadFile下载文件资源,success回调里面会返回下载的本地路径,在拿这个路径去调用wx.openDocument就可以啦!是不是很简单很有趣的一件事

// 预览文件
seePreviewFile() {
  const url = '' // 为在线地址
  wx.downloadFile({ // 下载资源到本地
    url,
    success: (res) => {
      if (res.statusCode === 200) {
        const { filePath } = res;
        wx.openDocument({
          filePath, // 需本地路径,通过downloadFile获取
          showMenu: true,
          // fileType: '', // 文件类型 合法值 doc,,docx,xls,xlsx,ppt,pptx,pdf
          success(e) {
            console.log('打开文档成功', e);
          },
        });
      }
    },
  });
},

API调用注意

当你没有在小程序的后台配置域名的时候,手机调试需要开启开发者模式,这时候不配置也可以上传,但是发布到正式版则需要在程序后台配置合法域名(https://mp.weixin.qq.com/)如果使用uniapp开发小程序文档则参考https://uniapp.dcloud.net.cn/,基本上大同小异,把wx.xxxx换成uni.xxx即可

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在微信小程序上传文件,你可以使用 `wx.chooseImage` 或 `wx.chooseFile` 方法来上传图片或其他文件。 1. `wx.chooseImage` 方法可以让用户选择图片并上传至服务器,代码示例: ```js wx.chooseImage({ count: 1, // 最多可以选择的图片张数,默认1张 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { // 返回选定照片的本地文件路径列表,tempFilePaths可作为img标签的src属性显示图片 var tempFilePaths = res.tempFilePaths; wx.uploadFile({ url: '服务器地址', // 上传接口地址 filePath: tempFilePaths[0], // 上传文件路径 name: 'file', // 上传文件名称 success: function (res) { // 上传成功后的处理逻辑 } }) } }) ``` 2. `wx.chooseFile` 方法可以让用户选择文件上传至服务器,代码示例: ```js wx.chooseFile({ success(res) { // 选择文件后的处理逻辑 wx.uploadFile({ url: '服务器地址', // 上传接口地址 filePath: res.tempFilePaths[0], // 上传文件路径 name: 'file', // 上传文件名称 success: function (res) { // 上传成功后的处理逻辑 } }) } }) ``` 要预览上传的图片或文件,可以使用 `wx.previewImage` 方法来预览图片,代码示例: ```js wx.previewImage({ current: '当前图片的url', // 当前显示图片的链接,不填则默认为urls的第一张 urls: ['图片1的url', '图片2的url'] // 需要预览的图片链接列表 }) ``` 对于其他类型的文件,可以使用 `wx.openDocument` 方法来打开预览,代码示例: ```js wx.openDocument({ filePath: '文件的本地路径', success: function (res) { // 打开文档成功的处理逻辑 } }) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值