Golang Gin框架文件下载:实现前后端文件交互
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')}
代码解析
- 导入必要的包: 代码首先导入了必要的包,包括
net/http、os、fmt、io、strconv和github.com/gin-gonic/gin。2. downloadHandler 函数: 该函数处理/download路径的 GET 请求。 - 首先,函数从请求参数中获取文件名。 - 然后,函数尝试打开指定的文件。如果文件不存在,则返回 404 错误。 - 接下来,函数获取文件信息,包括文件大小。 - 接着,函数设置响应头,告知浏览器这是一个附件,并指定文件名、文件类型和文件大小。 - 最后,函数将文件内容复制到响应体中,实现文件下载。3. main 函数: 该函数创建了一个 Gin 路由器,并将/download路径映射到downloadHandler函数。最后,启动服务器监听 8080 端口。
如何使用
- 将以上代码保存为
main.go文件。2. 使用go run main.go命令运行代码。3. 在浏览器中访问http://localhost:8080/download?filename=your-file.txt,其中your-file.txt是要下载的文件名。
总结
通过以上步骤,你就可以使用 Golang Gin 框架轻松地构建一个文件下载 API。
原文地址: https://www.cveoy.top/t/topic/fYX6 著作权归作者所有。请勿转载和采集!