新聞中心
這里有您想知道的互聯(lián)網營銷解決方案
如何使用Go語言下載網絡圖片
本篇文章給大家分享的是有關如何使用Go語言下載網絡圖片,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
10年的資興網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整資興建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“資興網站設計”,“資興網站推廣”以來,每個客戶項目都認真落實執(zhí)行。
使用GoLang的http.Get()方法
// 圖片以花瓣網的圖片為例 imgUrl := "http://hbimg.b0.upaiyun.com/32f065b3afb3fb36b75a5cbc90051b1050e1e6b6e199-Ml6q9F_fw320" res, err := http.Get(imgUrl) if err != nil { fmt.Println("A error occurred!") return } // defer后的為延時操作,通常用來釋放相關變量 defer res.Body.Close()
然后獲得get請求響應的reader對象
// 獲得get請求響應的reader對象 reader := bufio.NewReaderSize(res.Body, 32 * 1024)
上面獲取到了輸入流的reader對象, 下面來獲取本地文件的輸出流的writer對象
imgPath := "C:\\Users\\Asche\\go\\src\\GoSpiderTest\\" // 根據(jù)圖片url獲取其文件名 fileName := path.Base(imgUrl) file, err := os.Create(imgPath + fileName) if err != nil { panic(err) } // 獲得文件的writer對象 writer := bufio.NewWriter(file)
好了, reader和writer對象都得到了,然后在讀取寫入。
如果嫌麻煩的話,可以直接copy:
written, _ := io.Copy(writer, reader) // 輸出文件字節(jié)大小 fmt.Printf("Total length: %d", written)
或則手動讀取和寫入
bytes := make([]byte, 32 * 1024) for { len, err := reader.Read(bytes) if len < 0 || err != nil{ return } // 注意這里byte數(shù)組后的[0:len],不然可能會導致寫入多余的數(shù)據(jù) _, _ = writer.Write(bytes[0:len]) fmt.Printf("%d ", len) }
ok,下載完成。
下面貼上完整的代碼(讀取寫入采用的方法一)
package main import ( "bufio" "fmt" "io" "net/http" "os" "path" ) func main() { imgPath := "C:\\Users\\Asche\\go\\src\\GoSpiderTest\\" imgUrl := "http://hbimg.b0.upaiyun.com/32f065b3afb3fb36b75a5cbc90051b1050e1e6b6e199-Ml6q9F_fw320" fileName := path.Base(imgUrl) res, err := http.Get(imgUrl) if err != nil { fmt.Println("A error occurred!") return } defer res.Body.Close() // 獲得get請求響應的reader對象 reader := bufio.NewReaderSize(res.Body, 32 * 1024) file, err := os.Create(imgPath + fileName) if err != nil { panic(err) } // 獲得文件的writer對象 writer := bufio.NewWriter(file) written, _ := io.Copy(writer, reader) fmt.Printf("Total length: %d", written) }
以上就是如何使用Go語言下載網絡圖片,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當前文章:如何使用Go語言下載網絡圖片
文章起源:http://www.ef60e0e.cn/article/jgsipp.html