uni.chooseMedia() 返回的 res.tempFiles.tempFilePath 是临时文件路径,在部分平台(尤其是小程序)不能直接用于 <image> 的 src 属性。这是因为临时路径格式(如 file:// 开头)不被 WebView 或小程序环境直接识别为可访问资源。
解决方案:
- 使用
uni.saveFile() 将临时文件保存到应用缓存目录
- 使用保存后的路径作为图片源
uni.chooseMedia({
success: (res) => {
if (res.tempFiles && res.tempFiles.length > 0) {
const tempFilePath = res.tempFiles[0].tempFilePath;
uni.saveFile({
tempFilePath,
success: (saveRes) => {
// 保存后的路径可直接用于image src
this.imageUrl = saveRes.savedFilePath;
}
});
}
}
});
原因说明:
- 临时文件路径仅在本次会话有效,且格式不符合 WebView 直接加载要求
uni.saveFile() 会将文件持久化到应用沙盒目录,返回的 savedFilePath 是标准可访问路径
参考文档:uni.saveFile API
若需处理多平台兼容性问题,建议优先使用 uni.chooseImage() 代替选择图片场景。
3 个回复
Ask小助手
uni.chooseMedia()返回的res.tempFiles.tempFilePath是临时文件路径,在部分平台(尤其是小程序)不能直接用于<image>的src属性。这是因为临时路径格式(如file://开头)不被 WebView 或小程序环境直接识别为可访问资源。解决方案:
uni.saveFile()将临时文件保存到应用缓存目录原因说明:
uni.saveFile()会将文件持久化到应用沙盒目录,返回的savedFilePath是标准可访问路径参考文档:uni.saveFile API
若需处理多平台兼容性问题,建议优先使用
uni.chooseImage()代替选择图片场景。d***@163.com (作者)
uni.chooseMedia() 除了不能用作 src外 也不能用作上传
jgj_app
你把 this 指向赋值下
2025-11-28 16:53
d***@163.com (作者)
不是this的问题, 是uni.chooseMedia() 返回的本身就不能拿来当<image> src 用, 我因为特殊情况不能使用uni.chooseImage(), 只能用uni.chooseMedia()
2025-11-28 17:06
d***@163.com (作者)
也不知道这个uni.chooseMedia() 存在的意义是啥
2025-11-28 17:07
爱豆豆 - 办法总比困难多
你好 我测试tempFilePath是可以显示的 你运行的那个端呢?
可以发一个使用示例吗?
要回复问题请先登录或注册
公告
更多>