微信小程序中保存图片、查看pdf文件

微信小程序保存图片

如果图片是网络路径,⚠️微信官方文档中wx.saveImageToPhotosAlbum不支持

在这里插入图片描述
wx.saveImageToPhotosAlbum 微信官方文档 传送门🚪🚪🚪

怎么解决图片是网络路径呢?

微信官方文档也提供了一个 wx.downloadFile

在这里插入图片描述
在这里插入图片描述
在success回调函数中可以拿到转换后的临时文件路径tempFilePath,接下来就可以使用api来保存图片,代码如下:

function downloadFile(imgSrc = '') {
  //下载单张图片
  return new Promise((resolve, reject) => {
    wx.downloadFile({
      url: imgSrc,
      success: (res) => {
        resolve(res)
      },
      fail: (err) => {
        reject(err)
      }
    })
  })
}
let imgUrl = this.data.DetailInfo.imgurl
//这里的imgUrl是接口获取返回的网络路径图片
this.downloadFile(imgUrl).then(downres=>{
    wx.saveImageToPhotosAlbum({
        filePath: downres.tempFilePath,//此时filePath已经通过api转化成为本地临时路径
        success(res) {
            wx.showToast({
                title: '保存成功',
                icon: 'none',
                duration: 2000
            })
        },
        fail(err) {
            wx.showToast({
                title: '保存失败',
                icon: 'none'
            })
        }
    })
})

查看pdf文件

let pdfurl = this.data.invoiceInfo.pdfurl
// 这里的pdfurl是接口获取返回的网络路径
const randFile = new Date().getTime() + '.pdf'   // 设置本地存储的地址
wx.downloadFile({
  url: pdfurl, 
  // 使用自定义目录(文件路径)进行下载/保存
  filePath: `${wx.env.USER_DATA_PATH}/${randFile}`,
  success(res) {
    wx.openDocument({
      // 注意 : 文件地址是 filePath
      filePath: res.filePath,
      showMenu: true,
      fileType: 'pdf',
      success() {
        console.log("打开文档成功")
      }
    })
  }
})

如有遗漏,欢迎留言,fighting!

### 实现微信小程序保存 PDF 文件到本地 在微信小程序环境中,要实现将 PDF 文件保存至用户的手机相册或文档库,可以采用以下方法: 对于保存操作而言,`wx.downloadFile()` API 可用于先下载文件并获取其临时存储路径[^1]。然而,值得注意的是,直接通过 `wx.saveImageToPhotosAlbum` 来处理图片以外类型的文件并不适用;该接口专为图像设计[^2]。 为了能够保存 PDF 文件,开发者应当利用 `wx.getFileSystemManager().saveFile()` 方法来完成这一目标。此函数允许应用程序把指定的临时文件转换成长期存在的本地文件,从而让用户可以在设备重启后依然访问这些文件。具体流程涉及首先调用 `wx.downloadFile()` 下载 PDF 至临时位置,随后借助 `getFileSystemManager().saveFile()` 将之转存入长期储存空间。 下面是一个简单的代码片段展示如何执行上述过程: ```javascript // 下载PDF文件保存到本地 function savePdfToLocal() { let downloadTask = wx.downloadFile({ url: 'http://example.com/sample.pdf', success(res) { if (res.statusCode === 200) { const fs = wx.getFileSystemManager(); fs.saveFile({ tempFilePath: res.tempFilePath, success(saveRes) { console.log('文件已成功保存:', saveRes.savedFilePath); }, fail(err) { console.error('保存失败:', err); } }); } else { console.error('下载错误'); } }, fail(error) { console.error('下载失败:', error); } }); } ``` 需要注意的是,在实际开发过程中可能还需要考虑权限申请等问题,确保用户同意授予必要的读写权限以便顺利完成文件的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值