uni-app uni.chooseImage 存在bug 图片名称读不出来?
uni-app uni.chooseImage 存在bug 图片名称读不出来?
| 信息类别 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win7 旗舰版 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.2.9 |
| 手机系统 | Android |
| 手机系统版本号 | Android 11 |
| 手机厂商 | 华为 |
| 手机机型 | p30 |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
uni.chooseImage({
count: 1,
sizeType:['original', 'compressed'],
success: function(res) {
let resType = res.tempFiles[0].name
console.log("--",resType);
}
})
操作步骤:
uni.chooseImage({
count: 1,
sizeType:['original', 'compressed'],
success: function(res) {
let resType = res.tempFiles[0].name
console.log("--",resType);
}
})
预期结果:
---d--- ***.png
实际结果:
----d---- undefined
bug描述:
手机系统是 HarmonyOS 2.0, 在windows端运行正常,在手机端获取不了图片名称。


更多关于uni-app uni.chooseImage 存在bug 图片名称读不出来?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
楼上这个问题解决了吗。
更多关于uni-app uni.chooseImage 存在bug 图片名称读不出来?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
有说明
根据你的描述,这确实是 uni-app 中 uni.chooseImage API 在特定平台(如 HarmonyOS/Android)的一个已知行为差异,而非严格意义上的“bug”。
核心原因:
uni.chooseImage 的返回结果中,tempFiles 数组里每个对象的 name 属性,在部分安卓机型或系统(包括鸿蒙)上可能无法获取。这是因为底层实现依赖于系统原生的图片选择器,而系统选择器返回的 File 对象不一定包含文件名信息。在浏览器或部分安卓系统上可以获取,但在其他环境下可能为 undefined。
解决方案:
如果你必须获取图片的文件名,目前最可靠且跨平台兼容的方法是:从文件的路径(path)中手动解析出文件名。
修改你的成功回调代码如下:
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
success: function(res) {
// 获取临时文件路径
const tempFilePath = res.tempFilePaths[0];
// 从路径中提取文件名
const fileName = tempFilePath.substring(tempFilePath.lastIndexOf('/') + 1);
console.log("文件名:", fileName); // 例如: "xxx.png"
// 如果你仍需要访问 tempFiles 中的其他信息
console.log("文件类型:", res.tempFiles[0].type); // 这个属性通常可用
console.log("文件大小:", res.tempFiles[0].size); // 这个属性通常可用
}
});

