学习笔记,写到哪是哪。
接着上一篇文章:Go语学习笔记 - 增加时间工具 | Web框架Gin(五)_剑客阿良_ALiang的博客-CSDN博客
接着上一篇的时间工具,顺便加一个文件工具。
常规的文件操作方法就不写了,主要写一个文件下载方法。
项目地址:github地址
文件下载工具类代码如下:
package utils
import (
"fmt"
"github.com/google/uuid"
"io/ioutil"
"net/http"
"path"
"path/filepath"
)
//文件下载
func DownloadFile(url string, tempDir string) string {
_, _fileName := filepath.Split(url)
fmt.Printf("需要下载的文件名:%s\n", _fileName)
_ext := path.Ext(url)
_u4 := uuid.New()
_downloadFilePath := fmt.Sprintf("%s\\%s%s", tempDir, _u4, _ext)
_resp, _err := http.Get(url)
if _err != nil {
panic(_err)
}
defer _resp.Body.Close()
_data, _err := ioutil.ReadAll(_resp.Body)
if _err != nil {
panic(_err)
}
ioutil.WriteFile(_downloadFilePath, _data, 0644)
return _downloadFilePath
}
代码说明
1、下载的文件名采用uuid用来保持唯一性。
2、下载文件的后缀和url一致。
3、下载文件方法返回最终下载文件路径。
选择生成一个测试文件对方法进行测试,如下图。
测试代码如下:
package utils
import (
"fmt"
"testing"
)
func TestFileUtil(t *testing.T) {
imgUrl := "https://xxxxx.png"
fmt.Println(DownloadFile(imgUrl, "C:\\Users\\xxxx\\Desktop"))
}
测试一下代码,执行结果如下。
=== RUN TestFileUtil
需要下载的文件名:xxxx.png
C:\Users\xxxx\Desktop\45f1a5f6-e9e3-4e9e-a56b-141193a3c5c7.png
--- PASS: TestFileUtil (0.97s)
PASS
Process finished with the exit code 0
小结
后面开始整合数据库操作,实现一些小功能了。