45 lines
848 B
Go
45 lines
848 B
Go
package utils
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"fonchain-fiee/pkg/e"
|
|
"io"
|
|
"net/http"
|
|
"os"
|
|
"strings"
|
|
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// SaveUrlFileDisk 保存图片到本地
|
|
func SaveUrlFileDisk(url string, path string, filename string) (fullPath string, err error) {
|
|
if err = CreateDirPath(path); err != nil {
|
|
zap.L().Error("SaveUrlFileDisk err ", zap.Error(err))
|
|
return
|
|
}
|
|
if filename == "" {
|
|
stepName := strings.Split(url, "/")
|
|
if len(stepName) > 1 {
|
|
filename = stepName[len(stepName)-1]
|
|
}
|
|
}
|
|
|
|
resp, err := http.Get(url)
|
|
if err != nil {
|
|
err = errors.New(e.GetMsg(e.ERROR_DOWNLOAD_FILE))
|
|
return
|
|
}
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
|
|
}
|
|
resp.Body.Close()
|
|
}()
|
|
bytes, err := io.ReadAll(resp.Body)
|
|
fullPath = fmt.Sprintf("%s/%s", path, filename)
|
|
// 写入数据
|
|
err = os.WriteFile(fullPath, bytes, 0777)
|
|
return
|
|
}
|