微信小程序上传及预览文件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

前几天改小程序项目,增加了上传文件的需求,也是第一次写这个需求。搜索了大量关于此需求的博客文档,终于顺利完成,同时还附加了预览文件的功能。其中有很多博客说用webview可以实现预览文件,这个可以用,但是我用过之后是一堆乱码,而且官方文档上也说webview不能直接预览文件,所以我这里建议的方法是直接去调用wx.downloadFile()和wx.openDocument()这两个API就可以了有需要的博友,可以参考一下我的博客!

提示:以下是本篇文章正文内容,下面案例可供参考

一、选择文件和上传文件?

wx.chooseMessageFile()用来选择文件,下面附上其可用属性

在这里插入图片描述

wx.upLoadFile()用来上传文件,下面附上其可用属性

在这里插入图片描述

二、上传文件的实现代码

代码如下,不懂的地方可参考注释(示例):

 wx.chooseMessageFile({//调用选择文件接口
      count:Number(e.currentTarget.dataset.num),//文件数量
      type: 'file',
      success (res) {
        // tempFilePath可以作为img标签的src属性显示图片
        const tempFilePaths = res.tempFiles
        console.log('选择',res);//这里log一下res的值
        console.log(tempFilePaths);
        tempFilePaths.forEach(i=>{
          console.log(i);
          wx.uploadFile({//调用上传文件接口
          url: request.API + "/fileUpload/upload-image", //这个接口是后台给的
          filePath: i.path,
          name:'file',
          method:"post",
          header: {//headers记住传Authorization也就是token值,不然会返回401未登录
            "content-type": "multipart/form-data",
            "Authorization": wx.getStorageSync("token")
          },
          
          success (res){
            console.log(res);
            //上传成功后的一些操作
            wx.hideLoading();
            let rs = JSON.parse(res.data);
            if (rs.code == 0) {
              var str=rs.data.path
              console.log(str);
              var newStr = str.slice(0,4)+'s'+str.slice(4) 
                // console.log(newStr);
                const k = `${e.target.dataset.type}[${
                  e.target.dataset.key
                }].filevalue`;
            for(var i=0;i<tempFilePaths.length;i++){

              files.push({name:tempFilePaths[i].name,path:newStr})
            }
              // files.push({name:tempFilePaths[0].name,path:newStr})
              that.setData({
               [k]:files,
               files:files,
              })
              console.log(that.data.three);
            } else {
              that.setData({
                // isshow: true,
                message: "上传失败,稍后重试"
              });
              setTimeout(() => {
                that.setData({
                  //isshow: false,
                  message: ""
                });
              }, 2500);
            }
          }
        })
        })
        
      }
    })

三、下载文件和打开文件

wx.downloadFile下载文件,下面附上其可用属性

在这里插入图片描述

wx.openDocument打开文件,下面附上其可用属性以及可打开的文件类型

可用属性:
在这里插入图片描述
可打开的文件类型:
在这里插入图片描述

二、预览文件的实现代码

代码如下,不懂的地方可参考注释(示例):

 wx.downloadFile({
      url: e.currentTarget.dataset.path, // 要下载文件的路径
      success: function (res) {
        console.log(res);
        let filePath = res.tempFilePath; //微信临时文件路径
        console.log(filePath);
        wx.openDocument({
          filePath: filePath, 
                showMenu: false,  //是否显示右上角菜单按钮  默认为false
          success: function (res) {
            console.log('打开网络文档成功')
          },
          fail: function(error){
            console.log("打开网络文档失败")
          }
        })
      }
    })
以上就是微信小程序中上传文件及预览文件的方法,这些在微信官方文档中都有,只不过不太好找,下面附上官网地址,也可点击直接跳转:

官网地址:https://developers.weixin.qq.com/miniprogram/dev/api/

点我跳转到选择文件页面

点我跳转到上传文件页面

点我跳转到下载文件页面

点我跳转到打开文件页面

以上就是我分享的关于小程序上传及预览文件的博客,如果对你有用的话可点击收藏或关注,如果有大佬有更好的方法,欢迎博客下方评论区畅所欲言哟~~

要在微信小程序上传文件,你可以使用 `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) { // 打开文档成功的处理逻辑 } }) ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值