beego API显示图片
// @Title
// @Description 显示图片
// @Param num query string true 比如:图片名字20181120164548_75_jd.jpg
// @Success 200
// @router /ShowImage [get]
func (u *FirstpageController) ShowImage() {
u.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", u.Ctx.Request.Header.Get("Origin"))
filename := u.GetString("num") //获取需要上传的文件文件名
//查看文件名类型是否正确
picture := strings.Split(filename,".") //读取到字符串,并以.符号分隔开
layout := strings.ToLower(picture[len(picture)-1]) //把字母字符转换成小写,非字母字符不做出处理,返回此字符串转换为小写形式的副本。
if layout != "jpg" { //1533398400000
u.Ctx.WriteString("图片格式必须为:(jpg)")
panic("图片格式必须为:(jpg)")
}
//查看本及其上面是否存在需要的图片
readPath := beego.AppConfig.String("uploadpath")
img:= path.Join(readPath,filename)
u.Ctx.Output.Header("Content-Type", "image/jpg")
u.Ctx.Output.Header("Content-Disposition",fmt.Sprintf("inline; filename=\"%s\"",img))
file, err := ioutil.ReadFile(img)
if err != nil {
beego.Info("文件不存在")
return
}
u.Ctx.WriteString(string(file))
}
SWAGGER测试效果:
u.Ctx.Output.Header(“Content-Disposition”,fmt.Sprintf(“inline; filename=”%s"",img))
响应头信息中的Content-Disposition用于告知浏览器其获取到的文件是需要展示与页面内还是需要作为附件保存到用户本地,如果需要展示在页面内,设置为inline,否则设置为attachemnt
u.Ctx.Output.Header(“Content-Type”, “image/jpg”)
告诉客户端本服务器提供的对象的类型是image/jpg。image/jpg根据需要改,比如image/png,image/jpg等
u.Ctx.WriteString(string(file))
渲染浏览器客户端