我在以下代码中遇到错误
Uri imagesrc = new Uri("http://somewebsite.com/demo/images/slideshow/29.jpg");
Image image = Image.FromFile(Path.Combine("/comph/", imagesrc.ToString()));
我也尝试过以下代码 - 其中/comph/
是我的根目录
Image.FromFile(Path.Combine("/comph/","http://some_other_website.com/demo/images/slideshow/29.jpg");
当我在浏览器中粘贴此网址时,上面的图片网址是正确的。
使用上面的代码会引发异常:
不支持给定路径的格式。
此代码有什么问题?
答案 0 :(得分:2)
Path.Combine
不支持网址。
如果要使用Path.Combine
如果您想操纵网址,可以使用the Url constructor that takes a base url and a relative url and combines them。
答案 1 :(得分:-1)
快速(但有点脏)方法是从Uri获取本地部分,剥离根"/"
然后使用Path.Combine:
Uri imagesrc = new Uri("http://somewebsite.com/demo/images/slideshow/29.jpg");
string target = Path.Combine("comph", imagesrc.LocalPath.TrimStart('/'));
结果为"comph\demo/images/slideshow/29.jpg"
,这样可行,但您可以将/
替换为\
用于化妆品。
答案 2 :(得分:-1)
不要将Path.Combine
用于网址。该方法适用于本地文件系统路径!
虽然它可能无法在所有情况下都有效,但您通常可以使用new Uri(Uri, Uri)
来合并网址:
// using System;
var absoluteUri = new Uri('http://example.com/path/');
var relativeUri = new Uri('./more', UriKind.Relative);
var combinedUri = new Uri(absoluteUri, relativeUri);
当现有网址的路径以/
结尾时,将路径添加到现有网址似乎只能正常工作;否则,组合网址中可能缺少最后一个路径段。
(我还没有测试当现有网址已经有查询字符串或片段时会发生什么,顺便说一下。如果在你的情况下它可能是相关的,请确保自己测试一下。)