Golang Gin框架文件下载:实现前后端文件交互

本教程将演示如何使用Golang的Gin框架构建一个简单的API,用于处理前端的文件下载请求。

示例代码

以下代码展示了如何使用Gin框架创建一个处理文件下载请求的路由:gopackage main

import ( 'fmt' 'io' 'net/http' 'os' 'strconv'

'github.com/gin-gonic/gin')

func downloadHandler(c *gin.Context) { // 获取文件名 filename := c.Query('filename') if filename == '' { c.String(http.StatusBadRequest, 'filename is required') return }

// 打开文件	file, err := os.Open(filename)	if err != nil {		c.String(http.StatusNotFound, 'file not found')		return	}	defer file.Close()

// 获取文件信息	fileInfo, err := file.Stat()	if err != nil {		c.String(http.StatusInternalServerError, 'failed to get file info')		return	}

// 设置响应头	c.Header('Content-Disposition', fmt.Sprintf('attachment; filename=%s', filename))	c.Header('Content-Type', 'application/octet-stream')	c.Header('Content-Length', strconv.FormatInt(fileInfo.Size(), 10))

// 将文件内容写入响应体	_, err = io.Copy(c.Writer, file)	if err != nil {		c.String(http.StatusInternalServerError, 'failed to download file')		return	}}

func main() { router := gin.Default() router.GET('/download', downloadHandler)

router.Run(':8080')}

代码解析

  1. 导入必要的包: 代码首先导入了必要的包,包括 net/httposfmtiostrconvgithub.com/gin-gonic/gin。2. downloadHandler 函数: 该函数处理 /download 路径的 GET 请求。 - 首先,函数从请求参数中获取文件名。 - 然后,函数尝试打开指定的文件。如果文件不存在,则返回 404 错误。 - 接下来,函数获取文件信息,包括文件大小。 - 接着,函数设置响应头,告知浏览器这是一个附件,并指定文件名、文件类型和文件大小。 - 最后,函数将文件内容复制到响应体中,实现文件下载。3. main 函数: 该函数创建了一个 Gin 路由器,并将 /download 路径映射到 downloadHandler 函数。最后,启动服务器监听 8080 端口。

如何使用

  1. 将以上代码保存为 main.go 文件。2. 使用 go run main.go 命令运行代码。3. 在浏览器中访问 http://localhost:8080/download?filename=your-file.txt,其中 your-file.txt 是要下载的文件名。

总结

通过以上步骤,你就可以使用 Golang Gin 框架轻松地构建一个文件下载 API。

Golang Gin框架文件下载:实现前后端文件交互

原文地址: https://www.cveoy.top/t/topic/fYX6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录