阿勒泰地区网站建设_网站建设公司_Django_seo优化
2026/1/17 8:19:34 网站建设 项目流程

uni.chooseMedia返回的tempFilePath出现两种前缀,是平台文件系统差异 + 是否走压缩路径导致的正常现象:

  1. /storage/emulated/...

    • 出现场景:

      • Android 10 以下,或

      • Android 10+ 但用户选择了“原图/原视频”(HBuilderX 3.6+ 默认把原文件拷贝到应用私有缓存目录)

    • 本质:文件已真实落在沙箱缓存目录,后续可直接uni.uploadFileplus.io.*读取。

  2. content://media/external/...

    • 出现场景:

      • Android 10+ 且用户勾选了“压缩”(或选了相册里“最近”项),框架为了节省拷贝耗时,直接返回MediaStore 的 contentUri

    • 特点:

      • 没有物理路径,只能使用plus.io.convertLocalFileSystemURLuni.uploadFile透传上传;

      • 若用plus.io.resolveLocalFileSystemURL会报NOT_FOUND_ERR,因为文件并未复制到本地。

  3. iOS 始终返回file://...沙箱路径,不存在 contentUri。

开发建议(一条代码兼容)

uni.chooseMedia({ count:1, success(res){ let path = res.tempFiles[0].tempFilePath; // Android content:// 先转成本地可上传地址 if(path.startsWith('content://')){ path = plus.io.convertLocalFileSystemURL(path); } uni.uploadFile({url:'...',filePath:path}); } });

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询