uniapp遇到的坑:uni.downloadFile的文件下载保存功能

南国老符 南国老符 最后更新于:2022-04-28 浏览:494
 uni.downloadFile({  
            //https://www.df81.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top-e3b63a0b1b.png  
             url: 'http://music.163.com/song/media/outer/url?id=65538.mp3',   
             success: (res) => {  
                     if (res.statusCode === 200) {  
                         console.log('下载成功');  
                     }  
                  console.log(res.tempFilePath);  
                  uni.saveFile({  
                       tempFilePath: res.tempFilePath,  
                       complete(res) {  
                         console.log(res)  
                       }  
                     });  
             }  
         });

按官网api通过uni.downloadFile,获得tempFilePath 临时文件路径,再调用uni.saveFiled保存文件。测试发现几个问题:

1、下载图片(小文件),下载成功后调saveFiled 是可以保存成功的。但是换成MP3文件(大文件),下载成功后,保存报错提示文件不存在;


这个问题不知是BUG,还是说这种方式就不支持大文件。


2、uni.downloadFile 不支持后台下载,手机黑屏就暂停下载了。

现在解决方案 改用H5+api

不多BB直接看代码:

//查看已下载的文件

         function checkDownload(){  
            plus.io.requestFileSystem( plus.io.PUBLIC_DOWNLOADS, function(fs){  
                    var directoryReader = fs.root.createReader();  
                    directoryReader.readEntries( function( entries ){  
                        var i;  
                        for( i=0; i < entries.length; i++ ) {  
                                    console.log( entries[i].name );  
                                    entries[i].name = i  
                        }   
                    }, function ( e ) {  
                        console.log( "Read entries failed: " + e.message );  
                    });  
                });  
         }    

         // 创建下载任务  
         function createDownload() {  
            var dtask = plus.downloader.createDownload("https://www.df81.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top-e3b63a0b1b.png", {}, function(d, status){  
                // 下载完成 下载的文件会保存在 PUBLIC_DOWNLOADS 目录下,只要不主动删除都会存在  
                if(status == 200){   
                    console.log("Download success: ");  
                    console.log(d);  
                    checkDownload()  
                } else {  
                     console.log("Download failed: " + status);   
                }    
            });  
            ;  
            dtask.start();   
         }  
         createDownload()




解决了问题1, 下载文件, 查看已下载的文件。

这个方式依然不能后台下载。

还有不知怎么修改下载的文件名


点赞 (0)

收藏 (0)
转载请务必注明: 来源:《建站管家》https://www.df81.com/news/323.html

本站部分信息来源网络,如有侵权,请联系QQ:1062129401删除。

上一篇: putty修改linux服务器上文件夹权限的方法

下一篇: uni-app导入本地json数据

请先登录后,再发表评论 ~ ~
发表评论
评论 (0)

发表帖子
广告位招租( ¥5 / 天 )
点击咨询
最新帖子

南国老符
2025-05-26 16:54
南国老符
2024-09-29 10:29
南国老符
2023-12-15 21:41
广告位招租( ¥5 / 天 )
点击咨询
最近评论

U
user1379
回复:版本号多少?
U
user1379
回复:新版本修复了,下载新版本即可
U
user1379
U
user1304
回复:默认没有这个功能,你可以自行二次开发后期可能会考虑在站群版本上加入此功能及商城功能
Y
yuanis90
回复:后台->语言->全局管理->模型管理->编辑->启用关键词内链即可
Y
yuanis90
回复:后台已经启用了,但是前台产品说明的关分键词还是没有自动链接到,
购买VIP
购买授权
余额充值
发表帖子
客服微信