我试图从URL下载的图像保存: http://appworld.blackberry.com/webstore/servedimages/340582.png?t=2图像从URL问题
我使用HttpWebRequest
webRespose
Stream
BinaryReader
FileStream
BinaryWriter
这适用于其他网站和图片,但我给的网址以上给了我一个空的0字节的文件..
这意味着我无法将图像从该URL保存。
有没有人谁可以帮我?
我试图从URL下载的图像保存: http://appworld.blackberry.com/webstore/servedimages/340582.png?t=2图像从URL问题
我使用HttpWebRequest
webRespose
Stream
BinaryReader
FileStream
BinaryWriter
这适用于其他网站和图片,但我给的网址以上给了我一个空的0字节的文件..
这意味着我无法将图像从该URL保存。
有没有人谁可以帮我?
我使用HttpWebRequest的webRespose流BinaryReader在的FileStream的BinaryWriter
为什么使用6个不同的类时,你可以做同样的只有一个?
string sourceUrl = "http://appworld.blackberry.com/webstore/servedimages/340582.png?t=2";
string localPath = @"C:\foo\bar\340582.png";
using (WebClient wc = new WebClient())
{
wc.DownloadFile(sourceUrl, localPath);
}
如果您需要从该网址加载图像,你可以做到这一点(我假设你正在使用的WinForms/GDI):
string sourceUrl = "http://appworld.blackberry.com/webstore/servedimages/340582.png?t=2";
string localPath = @"C:\foo\bar\340582.png";
Image image;
using (WebClient wc = new WebClient())
using (Stream stream = wc.OpenRead(sourceUrl))
{
image = Image.FromStream(stream);
}
+1。WebClient就是要走的路 –
你是英雄托马斯!魅力;)但是我需要得到它的图像img = wc.MethodName;我怎样才能获得图像的图像对象? –
你的答案是伟大的,尤其是托马斯的方法工作得很好,代码行太少 然而,我需要从url到另一个图像对象获得图像。有没有办法做到这一点,而不需要下载文件。我对我的第一个问题感到抱歉,我以错误的方式问,这是我的错误。完美 –
我不知道您是否击中了他们的网站太多次,他们现在阻止你滥用...
最有可能的,他们正在检查发送的头,而不是让机器人抓住自己的知识产权。
两个可能的解决方案浮现在脑海中:
你或许应该一举两得。
的一点是,我怀疑这是一个代码问题,更可能侵犯他们的服务条款。
和乐趣:
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
// Setting the useragent seems to resolve certain issues that *may* crop up.
httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
谢谢,但我该如何将我的请求代码更改为可信的浏览器标题? –
HttpWebRequest webRequest =(HttpWebRequest)HTtpWebRequest.Create(imageUrl); webRequest.UserAgent =“Mozilla/4.0(compatible; MSIE 7.0; Windows NT 5.1); –
@Val Nolav:查看更新 – NotMe
我只是测试了这一点,这和下载为我保存了图像。您可能需要检查MIME类型以及沿途的所有地方。
string url = "http://appworld.blackberry.com/webstore/servedimages/340582.png?t=2";
using (System.Drawing.Image img = System.Drawing.Image.FromStream(WebRequest.Create(url).GetResponse().GetResponseStream())) {
img.Save("new.jpg");
}
Kluminotty,非常感谢朋友您的回答解决了我的问题 –
不是问题,我看到这篇文章,并意识到我刚刚在几个星期前通过我正在完成的一个Web应用程序经历了这个。不共享知识就是知识丢失。 –
您可以右键单击图像并将其保存到您的硬盘:) –
不,我现在只是尝试它,克里斯。问题是,当我试图在浏览器上打开这个图像时,它告诉我需要安装quicktimes插件。我可以看到图像,但是当我复制并粘贴直接链接时,它会告诉我安装该插件。 –
东西显然是你的代码错误,但如果你不张贴,这是很难说什么是错的... –