我正在尝试在golang中使用gin-gonic制作一个REST API ,它从GET请求中获取一些路径参数并下载该文件。


curl命令可以正常工作。但是,当我添加swagger UI文档时,如果下载的文件是文本或图像,它只是显示在该网页中,但我看不到任何下载选项。如果我输入视频文件的路径,浏览器会挂起。


此外,要下载的文件的MIME类型由gin-gonic正确确定。但是,要通过swagger UI 界面下载文件,我使用的是硬编码的 @Accept和@Produce swagger UI 注释注释。理想情况下,它应该自动确定 MIME 类型。


目前,响应类型被列为下拉列表,我可以在其中获得各种选项。我需要它来自动检测正确的 MIME 类型并尽可能显示下载按钮


我的 GET 请求代码是:


// DownloadObject godoc

// @Summary Download object

// @Description Download object

// @Produce application/json

// @Produce text/plain

// @Produce application/octet-stream

// @Produce video/mp4

// @Produce image/png

// @Produce image/jpeg

// @Produce image/gif

// @Param rootPath path string true "Root Path"

// @Param filePath path string true "File Path"

// @Header 200 {string} Token "qwerty"

// @Router /transfer/{rootPath}/{filePath} [get]

func DownloadObject(c *gin.Context) {


    // Get rootPath & filePath from GET request

    rootPath := c.Param("rootPath")

    filePath := c.Param("filePath")



    // Some code to get an io.Reader object "download"


    _, err = io.Copy(c.Writer, download)

    if err != nil {

        c.Status(http.StatusInternalServerError)

        log.Print(err)

        return

    }


    err = download.Close()

    if err != nil {

        c.Status(http.StatusInternalServerError)

        log.Print(err)

        return

    }

    

    c.Writer.Header().Add("Content-Disposition", fmt.Sprintf("attachment; filename=%", filePath))

    c.Writer.Header().Add("Content-Type", c.GetHeader("Content-Type"))

    // Object download completed & closed successfully


}

我在这里错过了什么吗?