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))

渲染浏览器客户端

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/84831006