最近在使用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对象