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

WebClient( MSDN ドキュメント) を参照してください。Web からデータをダウンロードするためのユーティリティ メソッドが多数あります。

リソースを として使用する場合は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 に答える