3

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

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

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

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

但它的给予

不支持 URL 格式

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

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

这是我的代码

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

5 回答 5

9

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

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

using(WebClient webClient = new WebClient())
{
    using(Stream stream = webClient.OpenRead(uriString))
    {
        using( StreamReader sr = new StreamReader(stream) )
        {
            Console.WriteLine(sr.ReadToEnd());
        }
    }
}
于 2013-07-29T07:41:44.620 回答
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。

于 2013-07-29T07:45:28.683 回答
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

于 2013-07-29T07:51:05.827 回答
1

在这里我找到了这个片段。可能完全符合您的需要:

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

它使用WebClient类。

于 2013-07-29T07:43:45.027 回答
0

要将 file:// URL 转换为 UNC 文件名,您应该使用该Uri.LocalPath属性,如文档中所述。

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

public FileStream GetFile(string url)
{
    var filename = new Uri(url).LocalPath;
    FileStream file = File.OpenRead(filename);
    return file;
}
于 2021-06-18T13:47:11.013 回答