string Url = "http://l.yimg.com/tw.yimg.com/i/tw/hp/spirit/yahoo_logo.gif";
string FullFileName = @"c:\tmp\yahoo_logo.gif";
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(Url);
//預設TimeOut是30秒
webReq.Timeout = 30000;
HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse();
//檢查儲存的檔案路徑,其目錄是否存在
if (!Directory.Exists(Path.GetDirectoryName(FullFileName)))
{
//建立目錄
Directory.CreateDirectory(Path.GetDirectoryName(FullFileName));
}
using (BinaryReader imgStream = new BinaryReader(webResp.GetResponseStream()))
{
File.WriteAllBytes(FullFileName, imgStream.ReadBytes((int)webResp.ContentLength));
}
後記:
本來是想直接使用 System.Drawing.Image 將 HttpWebResponse 的 Stream 轉為圖檔.
例如以下的程式:
Image.FromStream(webResp.GetResponseStream()).Save(FullFileName, ImageFormat.Gif);
不過, 很奇怪地, 這樣儲存的 gif 圖檔不僅顏色失真, 也只有一個 frame (gif 檔變成一般的靜態圖).
所以只好用傳統讀 byte[] 的方式逐步寫入檔案.
沒有留言:
張貼留言