uni-app uni.downloadFile 文件名字过长导致下载的文件没有后缀名
uni-app uni.downloadFile 文件名字过长导致下载的文件没有后缀名
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 11.2.3 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
PC开发环境操作系统版本号:11.2.3
HBuilderX类型:Alpha
HBuilderX版本号:3.2.10
手机系统:Android
手机系统版本号:Android 10
手机厂商:华为
手机机型:mate40
页面类型:vue
打包方式:云端
项目创建方式:HBuilderX
### 示例代码:
```javascript
uni.downloadFile({
url: surl,
success: res => {
uni.hideLoading();
if (res.statusCode === 200) {
const { tempFilePath } = res;
console.log(tempFilePath)
let filePath = plus.io.convertLocalFileSystemURL(tempFilePath);
console.log(filePath)
this.openDocInfo(filePath, false);
} else {
uni.core.alert('打开文件失败' + JSON.stringify(res))
}
},
fail: e => {
uni.hideLoading();
uni.showModal({
content: JSON.stringify(e) + '失败'
});
}
});
操作步骤:
uni.downloadFile 现在名字过长下载的文件没有后缀名?
预期结果:
uni.downloadFile 现在名字过长下载的文件没有后缀名?
实际结果:
uni.downloadFile 现在名字过长下载的文件没有后缀名?
bug描述:
uni.downloadFile 现在名字过长下载的文件没有后缀名?
更多关于uni-app uni.downloadFile 文件名字过长导致下载的文件没有后缀名的实战教程也可以访问 https://www.itying.com/category-93-b0.html
9 回复
比较急
更多关于uni-app uni.downloadFile 文件名字过长导致下载的文件没有后缀名的实战教程也可以访问 https://www.itying.com/category-93-b0.html
解决了吗
请问解决了吗,遇到了同样的问题
下载链接补齐Content-Disposition 这是最快最方便的
有例子嘛?不太明白
回复 DCloud_Android_ST: hao d e
这是 uni.downloadFile 在 Android 平台上的一个已知问题。当文件名过长时,系统可能会截断文件名,导致后缀名丢失。以下是解决方案:
- 手动指定文件名:在下载时通过
header设置Content-Disposition或使用filePath参数(App端支持):
uni.downloadFile({
url: surl,
filePath: `_downloads/${Date.now()}.${getFileExt(surl)}`, // 自定义路径和文件名
success: res => {
// 处理成功逻辑
}
});
- 从URL提取后缀并重命名:
function getFileExt(url) {
return url.split('.').pop().split(/\#|\?/)[0];
}
// 下载后重命名文件
uni.saveFile({
tempFilePath: tempFilePath,
success: savedRes => {
const newPath = savedRes.savedFilePath.replace(/(\.[^\.]+)?$/, `.${ext}`);
plus.io.resolveLocalFileSystemURL(savedRes.savedFilePath, entry => {
entry.moveTo(entry.parent, newPath, success => {
this.openDocInfo(newPath, false);
});
});
}
});
- 使用 uni.saveFile + 重命名组合方案:
uni.downloadFile({
url: surl,
success: res => {
uni.saveFile({
tempFilePath: res.tempFilePath,
success: savedRes => {
// 这里可以调用原生API重命名文件
this.renameFile(savedRes.savedFilePath, `filename.${ext}`);
}
});
}
});


