fengrui99 发表于 2019-11-21 11:04

【转】uni-app下载文件永久保存uni.downloadFile和uni.saveFile

原来转载来自:https://www.frbkw.com/2070/

uni-app下载文件永久保存uni.downloadFile和uni.saveFile,也有些不好的地方吧,比如文件存放的位置开始时临时的,转成永久的后 == 文件所谓在位置复杂


1.建立项目新建项目-选择uni-app (老图哈哈)https://frbkw.com//wp-center/uploads/2019/03/QQ20190321085032.png
2.添加下载事件
写一个按钮,点击按钮的时候在处发下载


<button type="primary" @tap="xiazai">确定下载</button>

3.uni.downloadFile下载
点击下载按钮后处发methods里面的函数(官方文档说明请点击我)下载后通过 downloadTask,可监听下载进度变化事件


methods: {
        xiazai() {
                const downloadTask = uni.downloadFile({
                        url: 'http://img.netbian.com/file/2019/0414/7bee7eef5fc44417a0b02a46576e7e16.jpg', //仅为示例,并非真实的资源
                                success: (res) => {
                                        if (res.statusCode === 200) {
                                                console.log('下载成功');
                                        }
                                        this.dd = res.tempFilePath;
                                        console.log(this.dd);
                        }
                });

                downloadTask.onProgressUpdate((res) => {
                        console.log('下载进度' + res.progress);
                        console.log('已经下载的数据长度' + res.totalBytesWritten);
                        console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
                });
        }
}
控制台中可以看到文件的下载位置(447行)和下载的大小等,但这个是临时文位置


https://frbkw.com//wp-center/uploads/2019/11/1574145939-8ec33e6edfba306-1024x164.png

4.uni.saveFile永久保存
当uni.downloadFile 回调成功后tempFilePath参数临时保存文件的路径,在使用uni.saveFile存到本地即可,整体代码如下


methods: {
        xiazai() {
                const downloadTask = uni.downloadFile({
                        url: 'http://img.netbian.com/file/2019/0414/7bee7eef5fc44417a0b02a46576e7e16.jpg', //仅为示例,并非真实的资源
                        success: (res) => {
                                if (res.statusCode === 200) {
                                        console.log('下载成功');
                                }
                                let that = this;
                                uni.saveFile({
                                        tempFilePath: res.tempFilePath,
                                                success: function(red) {
                                                        that.luj = red.savedFilePath
                                                        console.log(red)
                                                }
                                        });
                                }
                        });

                        downloadTask.onProgressUpdate((res) => {
                                console.log('下载进度' + res.progress);
                                console.log('已经下载的数据长度' + res.totalBytesWritten);
                                console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
                });
        }
}

5.保存所谓位置

它保存的位置比奇葩在“内部存储\Android\data\io.dcloud.HBuilder\apps\HBuilder\doc\uniapp_save”
如果是图片之类的可以直接保存在相册,或者5+plus自定义一个保存目录

AIctiy 发表于 2019-11-21 11:41

sometime is much

boteli 发表于 2019-11-21 11:45

大哥,你那边有没有UNI-APP的视频裁剪插件呀,就像抖音一样,自己上传的视频可以裁剪,时间控制在1分钟内的。。我想让上传的视频都要在1分钟内。。还有就是照片墙功能~!

fengrui99 发表于 2019-11-21 11:53

boteli 发表于 2019-11-21 11:45
大哥,你那边有没有UNI-APP的视频裁剪插件呀,就像抖音一样,自己上传的视频可以裁剪,时间控制在1分钟内的 ...

找个好像还没有

boteli 发表于 2019-11-21 11:57

fengrui99 发表于 2019-11-21 11:53
找个好像还没有

我现在找不到这样的插件,插件市场有,但是就一个裁剪功能,就要600元,有点坑。。

fengrui99 发表于 2019-11-21 13:16

boteli 发表于 2019-11-21 11:57
我现在找不到这样的插件,插件市场有,但是就一个裁剪功能,就要600元,有点坑。。

淘宝和咸鱼看看有么有便宜的
页: [1]
查看完整版本: 【转】uni-app下载文件永久保存uni.downloadFile和uni.saveFile