C# 图像URL的contentType为;text/html";
我想实现一种从网站下载图像到笔记本电脑的方法C# 图像URL的contentType为;text/html";,c#,httpwebrequest,httpwebresponse,C#,Httpwebrequest,Httpwebresponse,我想实现一种从网站下载图像到笔记本电脑的方法 public static void DownloadRemoteImageFile(string uri, string fileName) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if ((response.StatusC
public static void DownloadRemoteImageFile(string uri, string fileName)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if ((response.StatusCode == HttpStatusCode.OK ||
response.StatusCode == HttpStatusCode.Moved ||
response.StatusCode == HttpStatusCode.Redirect) &&
response.ContentType.StartsWith("image", StringComparison.OrdinalIgnoreCase))
{
//if the remote file was found, download it
using (Stream inputStream = response.GetResponseStream())
using (Stream outputStream = File.OpenWrite(fileName))
{
byte[] buffer = new byte[4096];
int bytesRead;
do
{
bytesRead = inputStream.Read(buffer, 0, buffer.Length);
outputStream.Write(buffer, 0, bytesRead);
} while (bytesRead != 0);
}
}
}
但是request
或response
的ContentType
不是“image/jpg”或“image/png”。它们总是“text/html”。我想这就是为什么我把它们保存到本地后,它们的内容不正确,我无法查看它们
这里有人能找到解决办法吗?
谢谢您可以使用此代码-基于
JpegBitmapDecoder类
JpegBitmapDecoder decoder = new JpegBitmapDecoder(YourImageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
//here you can adjust your YourImageStreamSource with outputStream value
BitmapSource bitmapSource = decoder.Frames[0];
Image myImage = new Image();
myImage.Source = bitmapSource;
myImage.Save("YourImage.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
链接:您可以使用此代码-基于
JpegBitmapDecoder类
JpegBitmapDecoder decoder = new JpegBitmapDecoder(YourImageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
//here you can adjust your YourImageStreamSource with outputStream value
BitmapSource bitmapSource = decoder.Frames[0];
Image myImage = new Image();
myImage.Source = bitmapSource;
myImage.Save("YourImage.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
链接:尝试将内容类型设置为特定图像类型
Response.ContentType = "image/jpeg";
尝试将内容类型设置为特定图像类型
Response.ContentType = "image/jpeg";
您的代码还可以,但您试图做的事情通常被网站所有者认为是不受欢迎的行为。大多数网站希望你在网站上看到图片,但不要随意下载。你可以搜索你的问题所在地,了解你反对的技术和保护措施
我强烈建议您在继续之前,阅读网站上的使用协议或任何类似文档。您的代码没有问题,但您尝试的行为通常被网站所有者视为不希望的行为。大多数网站希望你在网站上看到图片,但不要随意下载。你可以搜索你的问题所在地,了解你反对的技术和保护措施
我强烈建议您在继续之前,阅读您试图删除的站点上的使用协议或任何类似文档。您希望从中获取图像的站点可能需要cookie。有时,当我们使用浏览器访问站点时,我们可能没有注意到它,但浏览器实际上会访问站点大约一毫秒,然后快速重新加载,同时获取cookie。但在再次加载站点之前,我们的浏览器会将cookie传递给它,站点会接受cookie并返回图像 更详细地说,这意味着您的方法只能完成浏览器实际工作的一半。2个GET请求方法中的一半。第一个是获取cookie,第二个是实际获取图像本身
信息来源(可能有点相关):您希望从中获取图像的站点可能需要cookie。有时,当我们使用浏览器访问站点时,我们可能没有注意到它,但浏览器实际上会访问站点大约一毫秒,然后快速重新加载,同时获取cookie。但在再次加载站点之前,我们的浏览器会将cookie传递给它,站点会接受cookie并返回图像 更详细地说,这意味着您的方法只能完成浏览器实际工作的一半。2个GET请求方法中的一半。第一个是获取cookie,第二个是实际获取图像本身
信息来自(可能有点相关):您可能希望将代码放入代码块中,并确保其格式正确。现在很难阅读。谢谢,我是新手,我正在学习正确地发布问题。很抱歉给您带来不便。您要将什么url传递给此?如果url没有承载jpeg,您将得到它承载的任何内容。也可能是站点需要身份验证才能下载图像。@feroze:下面是url示例。我认为它是jpg文件的宿主,您可能希望将代码放在代码块中,并确保其格式良好。现在很难阅读。谢谢,我是新手,我正在学习正确地发布问题。很抱歉给您带来不便。您要将什么url传递给此?如果url没有承载jpeg,您将得到它承载的任何内容。也可能是站点需要身份验证才能下载图像。@feroze:下面是url示例。我认为jpg文件的主机我的问题不是解码图像。这是关于我将响应另存为html类型和图像文件的方法,因此我无法访问它。示例:我的url是“”,我想将其保存到“C:\image.jpg”。网站上的原始图像是500KB,但使用我的方法后,我的image.jpg是1KB,我无法使用它。image.Save(“yourmage.jpg”,System.Drawing.Imaging.ImageFormat.Jpeg);我的问题不是解码图像。这是关于我将响应另存为html类型和图像文件的方法,因此我无法访问它。示例:我的url是“”,我想将其保存到“C:\image.jpg”。网站上的原始图像是500KB,但使用我的方法后,我的image.jpg是1KB,我无法使用它。image.Save(“yourmage.jpg”,System.Drawing.Imaging.ImageFormat.Jpeg);ContentType仅用于“获取”ContentType,不能用于设置响应的ContentType。在调用GetResponse()之前,我尝试为请求设置ContentType。但它也不起作用:(这是另一篇SO帖子,希望它能帮助你回复。ContentType只用于“获取”ContentType,我们不能用它为响应设置ContentType。我在调用GetResponse()之前尝试为请求设置ContentType。但它也不起作用:(这是另一篇SO帖子,希望它能帮助你。)