2011-09-28 67 views
1

我試圖從URL下載的圖像保存: http://appworld.blackberry.com/webstore/servedimages/340582.png?t=2圖像從URL問題

我使用HttpWebRequestwebResposeStreamBinaryReaderFileStreamBinaryWriter

這適用於其他網站和圖片,但我給的網址以上給了我一個空的0字節的文件..

這意味着我無法將圖像從該URL保存。

有沒有人誰可以幫我?

+0

您可以右鍵單擊圖像並將其保存到您的硬盤:) –

+0

不,我現在只是嘗試它,克里斯。問題是,當我試圖在瀏覽器上打開這個圖像時,它告訴我需要安裝quicktimes插件。我可以看到圖像,但是當我複製並粘貼直接鏈接時,它會告訴我安裝該插件。 –

+1

東西顯然是你的代碼錯誤,但如果你不張貼,這是很難說什麼是錯的... –

回答

6

我使用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

+1。WebClient就是要走的路 –

+0

你是英雄托馬斯!魅力;)但是我需要得到它的圖像img = wc.MethodName;我怎樣才能獲得圖像的圖像對象? –

+0

你的答案是偉大的,尤其是托馬斯的方法工作得很好,代碼行太少 然而,我需要從url到另一個圖像對象獲得圖像。有沒有辦法做到這一點,而不需要下載文件。我對我的第一個問題感到抱歉,我以錯誤的方式問,這是我的錯誤。完美 –

1

我不知道您是否擊中了他們的網站太多次,他們現在阻止你濫用...

最有可能的,他們正在檢查發送的頭,而不是讓機器人抓住自己的知識產權。

兩個可能的解決方案浮現在腦海中:

  1. 更改請求代碼傳遞可信瀏覽器的標題。
  2. 呼叫blackberry.com並獲得許可,再利用他們的文件。

你或許應該一舉兩得。

的一點是,我懷疑這是一個代碼問題,更可能侵犯他們的服務條款。


和樂趣:

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)"; 
+0

謝謝,但我該如何將我的請求代碼更改爲可信的瀏覽器標題? –

+0

HttpWebRequest webRequest =(HttpWebRequest)HTtpWebRequest.Create(imageUrl); webRequest.UserAgent =「Mozilla/4.0(compatible; MSIE 7.0; Windows NT 5.1); –

+0

@Val Nolav:查看更新 – NotMe

1

我只是測試了這一點,這和下載爲我保存了圖像。您可能需要檢查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"); 
} 
+0

Kluminotty,非常感謝朋友您的回答解決了我的問題 –

+0

不是問題,我看到這篇文章,並意識到我剛剛在幾個星期前通過我正在完成的一個Web應用程序經歷了這個。不共享知識就是知識丟失。 –