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端运行正常,在手机端获取不了图片名称。

Image 1

Image 2


更多关于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); // 这个属性通常可用
    }
});
回到顶部