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, 下载文件, 查看已下载的文件。
这个方式依然不能后台下载。
还有不知怎么修改下载的文件名
上一篇: 《建站管家》二次开发文档
下一篇: uni-app导入本地json数据