uniapp(安卓)之文件下载

uniapp(安卓)之文件下载

 方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// 本地路径开头使用file://,跟上手机文件本地目录storage/emulated/0,
// 这时用户文件管理器能看到的了,之后创建 下载文件夹 作为文件夹,
// 后缀是用于文件命名和格式修改,大家可以使用变量。
var url = this.downFileSrc;
let dtask = plus.downloader.createDownload(url, {
    filename: "file://storage/emulated/0/下载文件夹/" + this.downFileName //利用保存路径,实现下载文件的重命名
},(d, status)=> {
    //d为下载的文件对象
    if (status == 200) {
        uni.showToast({
            icon: 'none',
            mask: true,
            title: '已保存到文件夹:/下载文件夹/' + this.downFileName, //保存路径
            duration: 3000,
        });
        //下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
        let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
        setTimeout(()=>{
            plus.runtime.openFile(d.filename); //选择软件打开文件
        },1500)
    } else {
        //下载失败
        plus.downloader.clear(); //清除下载任务
        uni.showToast({
            icon:'none',
            mask:true,
            title: '下载失败,请稍后重试',
        });
    }
})
// 添加tocken
      let tocken = storage.get("tocken");
  if (tocken != null) {
    dtask.setRequestHeader('Authorization', "Bearer " + tocken);
  }
 
// 执行
dtask.start();

  注意:

1.url指文件下载的接口路径。文件将被下载到手机内部存储的”下载文件夹“文件夹下。接口为get请求。

 2.uni.downloadFile、uni.saveFile的方式也可以将文件保存到手机,但保存的位置不受控制,很难在手机存储中找到。

3.plus.downloader.createDownload方法保存,由于直接使用请求接口路径,还需要配置token,所以建议添加到request.js文件中。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
downloadFile(url = "",name){
        let pathurl = config.uni_app_web_api_url + url;
        let tocken = storage.get("tocken");
        let header = {}
        if (tocken != null) {
            header = {
                "Authorization": 'Bearer ' + tocken,
            };
        }
        let dtask = plus.downloader.createDownload(pathurl, {
            filename: "file://storage/emulated/0/下载文件夹/"+name+".pdf" //利用保存路径,实现下载文件的重命名
        },(d, status)=> {
            console.log(d)
            console.log(status)
            //d为下载的文件对象
            if (status == 200) {
                uni.hideLoading();
                uni.showToast({
                    icon: 'none',
                    mask: true,
                    title: "已保存到文件夹:/下载文件夹/"+name+".pdf", //保存路径
                    duration: 3000,
                });
                //下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
                let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
                setTimeout(()=>{
                    plus.runtime.openFile(d.filename); //选择软件打开文件
                },1500)
            } else {
                //下载失败
                plus.downloader.clear(); //清除下载任务
                uni.showToast({
                    icon:'none',
                    mask:true,
                    title: '下载失败,请稍后重试',
                });
            }
        })
        dtask.start();
    },

  调用:(api)

1
2
3
export function exportZrWord(id,name) {
    return request.downloadFile("/honor/spaceData/exportZrWord?projectId=" + id,name)
}

  

 

 

 

钻研不易,转载请注明出处。。。。。。

 

 

posted @   莫小龙  阅读(1441)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2021-11-30 excel之富集分析图制作
点击右上角即可分享
微信分享提示