You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin iOS UIImagePickerController图库视频MediaURL路径无效问题

UIImagePickerController选取图库视频路径错误修复方案

错误根因

你报错的路径存在多次重复拼接的file:/协议头,核心问题是你对NSUrl对象取路径的方式错误:
System.IO.File类操作的是纯文件系统路径,不能带file://协议头,你直接调用NSUrl.ToString()会返回带协议头的完整URL字符串,反复转换拼接后就形成了无效路径。

修复后的代码

// 直接获取不带协议头的纯文件系统路径
string sourceVideoPath = e.MediaUrl.Path;
// 从NSUrl直接提取文件名,避免额外转换出错
string fileName = e.MediaUrl.LastPathComponent;
string targetPath = Path.Combine(Path.GetTempPath(), fileName);

// 执行拷贝,添加overwrite参数避免同名文件冲突
File.Copy(sourceVideoPath, targetPath, overwrite: true);

final_vid = new FileResult(targetPath);

相关说明

  1. 你对mediaURL有效期的认知是正确的:UIImagePickerController返回的mediaURL是系统临时分配的访问路径,生命周期仅维持在当前回调上下文范围内,退出回调或APP重启后就会失效,拷贝到自身APP沙箱目录(临时目录/文档目录)是标准正确实现。
  2. 额外注意事项:
  • 操作文件前建议先调用File.Exists(sourceVideoPath)判断源路径是否存在,提前捕获异常
  • 如果选取的是iCloud上未同步到本地的视频,该路径会返回无效值,需要先通过PHPhotoLibrary相关API请求将视频资源下载到本地后再执行拷贝操作

内容的提问来源于stack exchange,提问作者Mike K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 09:51:01