2

我需要从网站检索图像并将其保存到我的本地文件夹。图像类型在 .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 回答
0

尝试这样的事情

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("Your URL");
 request.Method = "GET";
 var response = request.GetResponse();
 var contenttype = response.Headers["Content-Type"]; //Get the content type and extract the extension.
 var stream = response.GetResponseStream();

然后保存流

于 2013-08-31T02:03:40.620 回答