Go语学习笔记 - 增加文件下载工具 | Web框架Gin(六)

学习笔记,写到哪是哪。

接着上一篇文章: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

小结

后面开始整合数据库操作,实现一些小功能了。

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

剑客阿良_ALiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值