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

Xamarin.Forms.Svg.SvgImageSource.FromSvgUri()加载file:// URI无效问题咨询

Xamarin.Forms.Svg 加载本地临时目录SVG失败问题解答

Xamarin.Forms.Svg.SvgImageSource.FromSvgUri 接口不支持直接加载file://协议的本地URI资源,该接口设计仅用于处理HTTP/HTTPS协议的网络SVG资源,本地文件场景需使用对应适配的接口。

正确实现方案

方案1:使用专门处理本地文件的FromSvgFile接口

无需拼接file://协议头,直接传入本地SVG文件的物理绝对路径即可,示例代码如下:

// 直接传递临时目录下的SVG文件物理路径
var svgSource = Xamarin.Forms.Svg.SvgImageSource.FromSvgFile(
    "/Users/jay/Library/Developer/CoreSimulator/Devices/398F23D7-B2A5-4F7C-B949-5E7E3B9AA0F1/data/Containers/Data/Application/B7EC93CF-1340-44CB-8DC5-72FDCD1349A1/tmp/tempPath/svgs/register_icon_pin.svg", 
    80, 
    80, 
    Color.Green);

方案2:使用流加载接口FromSvgStream

如果你已经将SVG文件读取为内存流,可使用该接口加载:

string svgFilePath = Path.Combine(Path.GetTempPath(), "tempPath/svgs/register_icon_pin.svg");
using (var fileStream = File.OpenRead(svgFilePath))
{
    var svgSource = Xamarin.Forms.Svg.SvgImageSource.FromSvgStream(
        () => fileStream, 
        80, 
        80, 
        Color.Green);
}

注意事项

  • iOS沙箱文件系统大小写敏感,需确认传入的文件路径大小写和实际存储的路径完全一致,避免因匹配失败无法读取文件
  • 可先将临时目录下的SVG文件导出,通过浏览器打开验证文件本身没有损坏、格式符合规范

内容的提问来源于stack exchange,提问作者Jay Sidri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:45:03