作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从网站检索图像并将其保存到我的本地文件夹。图像类型在 .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 吗?如果是这样,您是怎么做到的?
最佳答案
如果要使用WebClient
,则必须从WebClient.ResponseHeaders
中提取 header 信息。您必须先将其存储为字节数组,然后在获取文件信息后保存文件。
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);
使代码更整洁。
关于c# - 使用 WebClient 以适当的扩展名保存图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543518/
这段代码在 Java 中的等价物是什么?我放了一部分,我对 I/O 部分感兴趣: int fd = open(FILE_NAME, O_WRONLY); int ret = 0; if (fd =
我正在尝试将维度为 d1,d2,d3 的张量 M[a1,a2,a3] reshape 为维度为 d2, d1*d3 的矩阵 M[a2,a1*a3]。我试过 M.reshape(d2,d1*d3) 但是
我是一名优秀的程序员,十分优秀!