不支持URL格式

时间:2013-07-29 07:38:04

标签: c# asp.net

我正在使用File.OpenRead方法读取文件,我正在给出这条路径

   http://localhost:10001/MyFiles/folder/abc.png

我也试过这个,但没有运气

http://localhost:10001//MyFiles//abc.png

但它的给予

  

不支持网址格式

当我像这样给我的驱动器的物理路径时,它工作正常 d:\ MyFolder文件\ MyProject的\ MYFILES \文件夹\ abc.png

如何将文件路径提供给Http路径?

这是我的代码

public FileStream GetFile(string filename)
{
    FileStream file = File.OpenRead(filename);
    return file;
}

5 个答案:

答案 0 :(得分:7)

查看WebClientMSDN docs),它有许多实用方法可以从网上下载数据。

如果您希望资源为Stream,请尝试:

using(WebClient webClient = new WebClient())
{
    using(Stream stream = webClient.OpenRead(uriString))
    {
        using( StreamReader sr = new StreamReader(stream) )
        {
            Console.WriteLine(sr.ReadToEnd());
        }
    }
}

答案 1 :(得分:3)

您可以按照其他答案中的建议使用WebClient,也可以像这样获取相对路径:

var url = "http://localhost:10001/MyFiles/folder/abc.png";

var uri = new Uri(url);
var path = Path.GetFileName(uri.AbsolutePath);

var file = GetFile(path);
// ...

一般来说,你应该摆脱绝对的URL。

答案 2 :(得分:2)

下载HTML的最佳方法是使用WebClient类。你这样做:

    private string GetWebsiteHtml(string url)
    {
        WebRequest request = WebRequest.Create(url);
        WebResponse response = request.GetResponse();
        Stream stream = response.GetResponseStream();
        StreamReader reader = new StreamReader(stream);
        string result = reader.ReadToEnd();
        stream.Dispose();
        reader.Dispose();
        return result;
    }

然后,如果你想进一步处理HTML到ex。提取图像或链接,您将需要使用称为HTML报废的技术。

目前最好使用HTML Agility Pack

此外,有关WebClient类的文档:MSDN

答案 3 :(得分:1)

Here我找到了这个片段。可能完全符合你的需要:

using(WebClient client = new WebClient()) {
   string s = client.DownloadFile(new Uri("http://.../abc.png"), filename);
}

它使用WebClient类。

答案 4 :(得分:0)

要将 file:// URL 转换为 UNC 文件名,您应该使用 Uri.LocalPath 属性 as documented

换句话说,你可以这样做:

public FileStream GetFile(string url)
{
    var filename = new Uri(url).LocalPath;
    FileStream file = File.OpenRead(filename);
    return file;
}