最近在使用gin框架,写一个文件下载的功能,之前用beego写过一次
beego代码如下:
func (c *AdminApiController) Download_file() {
filename := c.GetString("filename")
c.Ctx.Output.Download("/www/wwwroot/static.x-x-mo.com/xunfei/" + filename)
}
beego上使用是完全没有问题的
然后使用gin写一个
gin代码如下:
r.GET("/download/file", func(c *gin.Context) {
var filename = "./test.mp3"
c.File(filename)
})
结果访问浏览器下载以后显示0字节
仔细核对了路径是没有问题的,并且如果路径不对 gin直接会返回一个404
于是我打算不通过gin自带的方法
直接用response writer一个文件返回于是我找到了 c.Request.Response.Write()
但是我不明白如何把一个文件对象转化为io.writer 这个这个方法里面传的是一个io.write对象