文档上文件格式可以是apk,真机模拟和云打包后都未能安装成功,查询觉得奇怪的点是,
为啥我的downloadFile返回的临时文件路径,没有文件后缀,下载地址可在浏览器上直接下载且有后缀有格式
/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/doc/uniapp_temp_1663141888515/download/315da213cc6e9f7c20c643f42dedc757
相关的权限也勾上了(INSTALL_PACKAGES 、REQUEST_INSTALL-PACKAGES)
targetSdkVersion 25
代码如下:
export const startDownload = (url) => {
const platform = uni.getSystemInfoSync().platform
const downloadTask = uni.downloadFile({
url,
success: downloadResult => {
console.log(downloadResult)
if (downloadResult.statusCode === 200) { //downloadResult.statusCode === 200
// return
plus.runtime.install(
downloadResult.tempFilePath, {
force: true
},
function() {
utils.showToast('更新成功,重启中');
plus.runtime.restart();
},
function(e) {
console.log(e)
plus.nativeUI.closeWaiting();
console.error('install fail...');
}
);
} else {
uni.showModal({
title: `提示:${downloadResult.statusCode}`,
content: `更新包下载失败,请联系管理员`,
showCancel: false,
success: function(res) {
if (res.confirm) {
switch (platform) {
case 'android':
plus.runtime.quit();
break;
case 'ios':
plus.runtime.restart();
break;
default:
console.log('运行在开发者工具上');
break;
}
}
}
});
}
},
fail: function(e) {
console.log('失败', e)
},
complete: function() {
// plus.nativeUI.closeWaiting();
}
});
var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象
downloadTask.onProgressUpdate((res) => {
console.log(res.progress)
showLoading.setTitle("正在下载" + res.progress + "% ");
if (res.progress == 100) {
plus.nativeUI.closeWaiting();
}
});
}
4 个回复
5***@qq.com (作者)
回答:使用plus 相关api下载文件自定义文件名带上后缀,因为我们获取文件的方式不是直接去服务器上拿文件,二是通过附件id再中转一层,导致没有文件后缀。
FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866
直接把下载地址发出来,下载地址一般要带后缀名,才可以
2990776359
作者请问解决了吗 可以加个qq吗
毛毛不是泰迪
请问你找到解决方案了吗?我也遇到了同样的问题
2023-05-29 12:20
s***@sina.com
解决了吗?下载wgt也没有后缀名
毛毛不是泰迪
我之前是因为文件服务器没有设置二级目录导致
2023-08-21 16:33