美文网首页程序员
《微信小程序开发从入门到实战》学习四十三

《微信小程序开发从入门到实战》学习四十三

作者: 阿宅白石 | 来源:发表于2023-12-05 21:54 被阅读0次

    4.3.3 下载文件

    在小程序端,使用wx.cloud.downloadFile方法可以将文件从云空间下载至本地。代码如下:

       // 使用回调风格的API下载文件,会返回一个downloadTask对象

       const downloadTask = wx.cloud.downloadFile({

         fileID: 'cloud://xxx.png', //文件的FileID

         success: res => {

           //下载文件成功后会返回临时文件路径

           console.log(res.tempFilePath)

         },

         fail: err => {

           //handle error

         }

       })

       // 在downloadTask对象上可以设置下载进度的监听回调

       downloadTask.onProgressUpdate(res => {

         console.log('下载进度', res.progress)

         console.log('已经下载的数据长度', res.totalBytesWritten)

         console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite)

       })

       // 也可以通过downloadTask上面的abort方法取消下载任务

       // downloadTask.abort()

       // 下载文件时同样也支持Promise风格的API,但是不再返回downloadTask对象

       wx.cloud.downloadFile({

         fileID: 'cloud://xxx.png'

       }).then(res => {

         //get temp file path

         console.log(res.tempFilePath)

       }).catch(error => {

         // handle error

       })

    (实践的时候,复制之前上传的文件的fileID到代码的fileID来,下载文件下来。在调试台的打印输出那里,打印完进度条后是下载的文件的临时url,点开可以看到图片,在电脑里实在找不到下载文件的文件路径,至少我目前暂时找不到)

    下载文件成功时,文件实际上是被下载到一个临时的地方,当小程序关闭后这个文件有可能会被清理。如果希望永久存储文件,则需要使用wx.saveFile API,代码如下:

    wx.cloud.downloadFile({

        fileID: 'cloud://xxx.png', // 文件的FileID

        success: res => {

          wx.getFileSystemManager().saveFile({

            tempFilePath: res.tempFilePath,

            success(res2){ // 使用res2命名参数,区别于已经存在的res变量

              const savedFilePath = res2.savedFilePath //从success回调的参数中获取文件路径

              console.log(savedFilePath)

            }

          })

        }

    (实际运行的时候,success写错了,写成了sucess,改正后,提示我wx.saveFile快过时了,要换成wx.getFileSystemManager().saveFile,最后运行完调试台输出文件路径是临时url,担心永久存储了文件,现在又找不到文件位置,删不掉,多下几次内存会不会爆,瑟瑟发抖 ,先这样,以后有时间再找找)

    相关文章

      网友评论

        本文标题:《微信小程序开发从入门到实战》学习四十三

        本文链接:https://www.haomeiwen.com/subject/crwdgdtx.html