【摘】fileSystemManager.saveFile保存的文件在哪里能找到?
发布于 4 年前 作者 guiying81 5438 次浏览 来自 分享

场景是:在小程序中下载docx或者excel,并且客户需要拿到这个文件,后续去转发。

现在找不到这个文件。  请问需要怎么做才能找到这个文件。


wx.env.USER_DATA_PATH + '/abc.txt'

wx.env.USER_DATA_PATH 真机上是 wxfile://usr

真实路径:手机\内部存储\tencent\MicroMsg\wxanewfiles\xxxx\abc.txt

xxxx:是一个很长的由英文数字组成的文件夹,这个文件夹的命名规则,尚不清楚

所以保存后的文件具体在什么路径不知道,是个问题,不过有个投机取巧的方法:

1.使用wx.downloadFile下载docx文件后,使用fileSystemManager.saveFile保存docx文件为图片格式

2.保存成功后,在使用wx.saveImageToPhotosAlbum保存到相册,最后路径为

手机\内部存储\tencent\MicroMsg\WeiXin\mmexpor1xxxxxxxx.jpg,1xxxxxxxx为时间戳,只能根据文件生成时间判断是哪个文件了


//先检查相册访问授权情况

wx.getSetting({

    success: (res) => {

        //检查是否有访问相册的权限,如果没有则通过wx.authorize方法授权

        if (!res.authSetting['scope.writePhotosAlbum']) {

            console.log('没有获取授权');

            wx.authorize({

                scope: 'scope.writePhotosAlbum',

                success: (res) => {

                    //用户点击允许获取相册信息后进入下载保存逻辑

                    this.save()

                }

            })

        } else {

            console.log('已获取授权');

            this.save()

        }

    }

});



save:function(){

    wx.downloadFile({

        url: "docx文件下载地址",

        success(res) {

            console.log(res)

            var savePath = wx.env.USER_DATA_PATH + "/123.docx.jpg"

            wx.getFileSystemManager()

            .saveFile({//下载成功后保存到本地

                tempFilePath: res.tempFilePath,

                filePath: savePath ,

                success(res2) {

                    //获取了相册的访问权限,使用 wx.saveImageToPhotosAlbum 将图片保存到相册中

                    wx.saveImageToPhotosAlbum({

                        filePath: savePath ,

                        success: (res) => {

                            //保存成功弹出提示,告知一下用户

                            wx.showModal({

                                title: '文件已保存到手机相册',

                                content: '位于tencent/MicroMsg/WeiXin下 \r\n将保存的文件重命名改为[ .docx ]后缀即可',

                                confirmColor: '#0bc183',

                                confirmText: '知道了',

                                showCancel: false

                            })

                        },

                        fail(res) {

                            console.log(res)

                        }

                    })

                },

                fail(res) {

                    console.log(res)

                }

            })

        },

        fail(res) {

            console.log(res)

        }

    })

},



文件名类似 mmexpor1xxxxxxxx.jpg

1xxxxxxxx为时间戳,只能根据文件生成时间判断是哪个文件了

最后,记得找到文件,手动重命名拓展名或.docx或者.xlsx

回到顶部