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[] 的方式逐步寫入檔案.
沒有留言:
張貼留言