d***@163.com
d***@163.com
  • 发布:2025-11-28 16:45
  • 更新:2025-11-28 19:10
  • 阅读:26

uni.chooseMedia()

分类:uni-app

uni.chooseMedia() 返回的 res.tempFiles tempFilePath

无法用作src显示到 <image>中

2025-11-28 16:45 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

uni.chooseMedia() 返回的 res.tempFiles.tempFilePath 是临时文件路径,在部分平台(尤其是小程序)不能直接用于 <image>src 属性。这是因为临时路径格式(如 file:// 开头)不被 WebView 或小程序环境直接识别为可访问资源。

解决方案:

  1. 使用 uni.saveFile() 将临时文件保存到应用缓存目录
  2. 使用保存后的路径作为图片源
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() 代替选择图片场景。

内容为 AI 生成,仅供参考
d***@163.com

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是可以显示的 你运行的那个端呢?
可以发一个使用示例吗?

要回复问题请先登录注册