uni-app chooseImage上传回显问题
uni-app chooseImage上传回显问题
| 信息类别 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | 1.0.2 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.1.22 |
| 手机系统 | Android |
| 手机系统版本号 | Android 11 |
| 手机厂商 | 华为 |
| 手机机型 | nova7 |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
| App下载地址或H5网址 | http://qsmall.net/QSMall_debug.apk |
示例代码:
uni.chooseImage({
sourceType: ['album'], //album 从相册选图,camera 使用相机,默认二者都有
sizeType: ['compressed'],//original 原图,compressed 压缩图,默认二者都有
count: that.max_number,
success: (res) => {
uni.previewImage({
urls: res.tempFilePaths,
longPressActions: {
itemList: ['发送给朋友', '保存图片', '收藏'],
success: function(data) {
console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
},
fail: function(err) {
console.log(err.errMsg);
}
}
});
},
})
操作步骤:
- 上传图片从 图库 选择图片
预期结果:
- 成功回显
实际结果:
- 不能回显
bug描述: APP - webview方式加载的页面 使用chooseImage方法选择图片,只有从 ‘文件’ 里面选择的图片能回显成功 从 ’文件管理‘ ’图库‘ 选择的图片都回显失败 尽管图片是同一张图片 浏览器打开上传图片正常 仅安卓端出现问题

更多关于uni-app chooseImage上传回显问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app chooseImage上传回显问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在uni-app中,chooseImage方法返回的tempFilePaths是临时文件路径,这些路径在App端(尤其是Android)可能无法直接用于previewImage预览。这是因为不同来源的图片文件路径处理方式存在差异。从“文件”选择的图片路径通常是可直接访问的,而“图库”或“文件管理”中的路径可能需要转换为可访问的URL。
解决方案是使用uni.getFileSystemManager().readFile将临时文件转换为base64格式或通过uni.uploadFile上传到服务器后使用网络URL。以下是修改后的代码示例:
uni.chooseImage({
sourceType: ['album'],
sizeType: ['compressed'],
count: that.max_number,
success: (res) => {
const tempFilePaths = res.tempFilePaths;
// 转换临时路径为base64用于预览
const previewUrls = [];
tempFilePaths.forEach((tempFilePath) => {
uni.getFileSystemManager().readFile({
filePath: tempFilePath,
encoding: 'base64',
success: (readRes) => {
const base64Url = `data:image/jpeg;base64,${readRes.data}`;
previewUrls.push(base64Url);
// 当所有图片转换完成后预览
if (previewUrls.length === tempFilePaths.length) {
uni.previewImage({
urls: previewUrls,
longPressActions: {
itemList: ['发送给朋友', '保存图片', '收藏'],
success: (data) => {
console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
},
fail: (err) => {
console.log(err.errMsg);
}
}
});
}
},
fail: (err) => {
console.log('读取文件失败:', err);
}
});
});
}
});

