2

Web サイトから画像を取得してローカル フォルダーに保存する必要があります。画像の種類は、.png、.jpg、.gif の間で異なります

使ってみました

string url = @"http://redsox.tcs.auckland.ac.nz/CSS/CSService.svc/";
string saveLoc = @"/project1/home_image";
using (var wc = new WebClient())
{
    wc.DownloadFile(url, saveLoc);
}

ただし、これにより、ファイル「home_image」が拡張子なしでフォルダーに保存されます。私の質問は、拡張子をどのように決定するのですか? これを行う簡単な方法はありますか?HTTP リクエストの Content-Type を使用できますか? もしそうなら、どうやってこれをしますか?

4

2 に答える 2

9

を使用する場合はWebClient、 からヘッダー情報を抽出する必要がありますWebClient.ResponseHeaders。最初にバイト配列として保存し、ファイル情報を取得した後にファイルを保存する必要があります。

string url = @"http://redsox.tcs.auckland.ac.nz/CSS/CSService.svc/";
string saveLoc = @"/project1/home_image";

using (WebClient wc = new WebClient())
{
    byte[] fileBytes = wc.DownloadData(url);

    string fileType = wc.ResponseHeaders[HttpResponseHeader.ContentType];

    if (fileType != null)
    {
        switch (fileType)
        {
            case "image/jpeg":
                saveloc += ".jpg";
                break;
            case "image/gif":
                saveloc += ".gif";
                break;
            case "image/png":
                saveloc += ".png";
                break;
            default:
                break;
        }

        System.IO.File.WriteAllBytes(saveloc, fileBytes);
    }
}

内線番号はできれば 3 文字にしたいのですが....個人的な好みです。気にしない場合は、switchステートメント全体を次のように置き換えることができます。

saveloc += "." + fileType.Substring(fileType.IndexOf('/') + 1);

コードを少しすっきりさせます。

于 2013-08-31T03:18:29.973 に答える