package lxCommon import ( "fmt" "io" "io/ioutil" "os" "path/filepath" "runtime" "time" ) // 二进制流文件保存到本地 name png pdf func SaveFile(url, path, name string) (filePath string, err error) { c := NewClient() //忽略证书 _dir := AddNewFile(path) filePath = _dir + name resp, err := c.Get(url) if err != nil { fmt.Println(err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err) return } err = ioutil.WriteFile(filePath, body, 0644) if err != nil { fmt.Println(err) return } return } func AddNewFile(folder string) string { oldPath := folder if runtime.GOOS == "windows" || runtime.GOOS == "darwin" { oldPath = "./pdf/" } _dir, _ := CreateDateDir(oldPath) return _dir } func Copy(src, dst string) (int64, error) { sourceFileStat, err := os.Stat(src) if err != nil { return 0, err } if !sourceFileStat.Mode().IsRegular() { return 0, fmt.Errorf("%s is not a regular file", src) } source, err := os.Open(src) if err != nil { return 0, err } defer source.Close() destination, err := os.Create(dst) if err != nil { return 0, err } defer destination.Close() nBytes, err := io.Copy(destination, source) return nBytes, err } func GetFileSize(filename string) (int64, error) { fi, err := os.Stat(filename) if err != nil { return 0, err } return fi.Size() / 1024 / 1024, nil } func CreateDateDir(basePath string) (dirPath, dataString string) { folderName := time.Now().Format("2006-01-02") folderPath := filepath.Join(basePath, folderName) if _, err := os.Stat(folderPath); os.IsNotExist(err) { // 必须分成两步 // 先创建文件夹 os.MkdirAll(folderPath, 0777) // 再修改权限 os.Chmod(folderPath, 0777) } return folderPath + "/", folderName } // 判断文件夹/文件是否存在 func PathIsExists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { return true, nil } if os.IsNotExist(err) { return false, nil } return false, err }