您现在的位置是:首页 > Golang

使用 Golang 从网络下载图片到本地

Golang作者:chenli日期:2021-07-20 19:44:12点击:1148

使用 Golang 从网络下载图片到本地,自动创建文件夹

  1. // 下载图片
  2. func DownImage(imgUrl string) (filename string, err error) {
  3. //fmt.Println(beego.WorkPath)
  4. appPath, _ := os.Getwd()
  5. fileBaseName := path.Base(imgUrl)
  6. // 图片保存的相对路径
  7. imgPath := filepath.Join("/static/download/images", time.Now().Format("200601"))
  8. filename = filepath.Join(imgPath, fileBaseName)
  9. res, err := http.Get(imgUrl)
  10. if err != nil {
  11. fmt.Println("A error occurred!")
  12. return
  13. }
  14. defer res.Body.Close()
  15. b, err := ioutil.ReadAll(res.Body)
  16. if err != nil {
  17. return
  18. }
  19. // 自动创建文件夹
  20. if err = CheckDir(appPath + imgPath); err != nil {
  21. return
  22. }
  23. f, err := os.OpenFile(appPath+filename, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666)
  24. defer f.Close()
  25. if err != nil {
  26. return
  27. } else {
  28. _, err = f.Write(b)
  29. if err != nil {
  30. return
  31. }
  32. }
  33. return
  34. }
  35. func CheckDir(path string) error {
  36. if _, err := os.Stat(path); err == nil {
  37. return nil
  38. } else {
  39. err := os.MkdirAll(path, 0711)
  40. if err != nil {
  41. return err
  42. }
  43. }
  44. // check again
  45. _, err := os.Stat(path)
  46. return err
  47. }

文章评论