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

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

上一篇文件整理了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即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值