在Golang中使用Gin框架进行文件上传和下载可以使用以下方法:

文件上传:

  1. 首先,确保你已经安装了Gin框架并导入了相关的包:
import (
    "github.com/gin-gonic/gin"
)
  1. 在路由中添加文件上传的处理程序:
router := gin.Default()

// 文件上传处理程序
router.POST("/upload", func(c *gin.Context) {
    // 从请求中获取文件
    file, err := c.FormFile("file")
    if err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }

    // 将文件保存到指定路径
    err = c.SaveUploadedFile(file, "uploads/"+file.Filename)
    if err != nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
        return
    }

    c.JSON(http.StatusOK, gin.H{"message": "File uploaded successfully"})
})

在上面的代码中,c.FormFile("file")用于从请求中获取上传的文件,c.SaveUploadedFile(file, "uploads/"+file.Filename)用于将文件保存到指定路径。

文件下载:

  1. 在路由中添加文件下载的处理程序:
router := gin.Default()

// 文件下载处理程序
router.GET("/download/:filename", func(c *gin.Context) {
    // 获取文件名参数
    filename := c.Param("filename")

    // 打开文件
    file, err := os.Open("uploads/" + filename)
    if err != nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
        return
    }
    defer file.Close()

    // 设置响应头,告诉浏览器以附件形式下载文件
    c.Header("Content-Disposition", "attachment; filename="+filename)

    // 将文件内容写入响应体
    io.Copy(c.Writer, file)
})

在上面的代码中,c.Param("filename")用于获取文件名参数,os.Open("uploads/" + filename)用于打开文件,c.Header("Content-Disposition", "attachment; filename="+filename)用于设置响应头,告诉浏览器以附件形式下载文件,io.Copy(c.Writer, file)用于将文件内容写入响应体。

注意:上述代码中的文件保存和下载的路径为"uploads/",你可以根据自己的需求进行修改。同时,还需要确保"uploads/"目录存在

golang gin 文件上传下载

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

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