易软
易软
  • 发布:2020-11-19 11:48
  • 更新:2024-07-28 21:53
  • 阅读:14143

uni-app 使用uni.downloadFile下载文件后怎么指定保存的目录

分类:uni-app

详细的 业务为 我需要在服务器下载一段音频文件 通过downloadFile 下载后 官方的意思是通过 uni.saveFile 来保存 这个其实就是 放在了内部存储\Android\data\io.dcloud.HBuilder\apps\HBuilder\doc\uniapp_save 里面 和沙盒的位置不一样而已,并且通过uni.removeSavedFile 删除掉,我想在的意思是 当下在成功后 自己可以自定一个内部储存 文件夹来放置 我下载的音频文件,我也看了 H5+API 也没有发现方法可以打开手机的目录进行存放。plus.io.requestFileSystem 这个方法也没有走通,不知道是我的方法不对还是怎么。
求解决

2020-11-19 11:48 负责人:DCloud_UNI_GSQ 分享
已邀请:
易软

易软 (作者)

只针对安卓

DCloud_UNI_GSQ

DCloud_UNI_GSQ

可以直接使用plus.download 相关接口下载到指定目录
uni. downloadFile 的代码也是开源的,其内部就是使用 plus的接口实现,可以去看
也可以使用 plus.io 相关接口移动文件
uni.saveFile 的代码也是开源的,其内部就是使用 plus的接口实现,可以去看

  • 易软 (作者)

    不是说再安卓10+以上不允许移动至沙盒外的目录吗?

    2020-11-20 09:35

  • 易软 (作者)

    而且 在下载任务接口里面的filename 属性用来设置保存路径 只给了应用目录的方法如果要存公共目录呢,比如我要存在 内部存储>Android下面呢或者 内部存储>Android>data 下面呢。而且是Android10 能行吗?

    2020-11-20 09:58

  • [已删除]

    回复 易软: 请问怎么保存文件到Android的Download目录下?

    2021-02-01 12:10

  • 1***@qq.com

    要不你给个地址 要不你给个方法

    2022-08-27 14:38

w***@jsunet.cn

w***@jsunet.cn

解决了吗?

9***@qq.com

9***@qq.com

解决了么
var url = this.URL+this.classDetial.adjunct
let dtask = plus.downloader.createDownload(url, {
//本地路径开头使用file://,跟上手机文件本地目录storage/emulated/0,就是用户文件管理器能看到的了,之后我创建微垠作为文件夹,后缀是用于文件命名和格式修改,大家可以使用变量。
filename: "file://storage/emulated/0/APP/" + this.classDetial.adjunctName //利用保存路径,实现下载文件的重命名
},

            function(d, status) {  
                //d为下载的文件对象  
                // console.log('d为下载的文件对象', d)  
                // console.log('status为下载的文件对象', status)  
                if (status === 200) {  
                    console.log('下载成功', d.filename)  
                    //下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径  
                    let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);  
                    console.log('fileSaveUrl',fileSaveUrl)  
                    // plus.runtime.openFile(d.filename); //选择软件打开文件  
                    uni.openDocument({  
                      filePath: d.filename,  
                    });  
                } else {  
                    //下载失败  
                    plus.downloader.clear(); //清除下载任务  
                }  
            })  
            dtask.start();  

这个保存的目录也找不到啊

  • 鸡排饭加个蛋

    安卓10 11+ 亲测有效,可能是你没有设置申请到存储权限。可以先手动开启app到存储权限,再尝试一下,如果可以,那可以通过代码获取到存储权限后,再触发plus.downloader.createDownload

    2023-03-22 15:18

  • d***@qq.com

    回复 鸡排饭加个蛋: 确实,开了存储权限就可以了

    2024-07-28 22:00

  • 糖分至上

    回复 d***@qq.com: 老哥请问有示例吗,我这也没成功

    2024-11-25 11:59

q***@qq.com

q***@qq.com - 为二进制而疯狂的男人

不能,这狗逼文档太狗血,一点也不全,不详细,T么D是不是坑用户还是为了赚钱

  • 尼卡路西

    没错,是为了挣钱,这算是官方论坛吧?一堆破问题,也没见几个是官方来回答的,还维护不?天坑

    2022-08-25 19:51

超人2021

超人2021

解决了吗,能实现吗, plus.downloader.createDownload这个方法也只是下载到应用包名下,而不是下载到指定目录

d***@qq.com

d***@qq.com

QAQ解决了踢我一脚

易软

易软 (作者)

能不能指定下载到根目录下的DownLoad 目录中啊

要回复问题请先登录注册