uni.downloadFile({
//https://dss0.bdstatic.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保存文件。测试发现几个问题:
-
下载图片(小文件),下载成功后调saveFiled 是可以保存成功的。但是换成MP3文件(大文件),下载成功后,保存报错提示文件不存在;
-
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://dss0.bdstatic.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, 下载文件, 查看已下载的文件。
这个方式依然不能后台下载。
还有不知怎么修改下载的文件名