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测试效果:
beego API服务器&客户端浏览器的图片的显示与保存_第1张图片

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

渲染浏览器客户端

服务器端保存客户端发送的图片

// @Title
// @Description      意见
// @Param	123      query 	   []byte	false   获取图片二进制流出
// @Success 200
// @router /UpALL [post]
func (u *TodayRptController) UpALL() {
	u.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", u.Ctx.Request.Header.Get("Origin"))

	tmpfile, fheader, err  := u.Ctx.Request.FormFile("123")   // u.GetFile("123") 效果相同  “123”是二进制流的键名.获取上传的文件
	if err != nil{
		panic(err)
	}
	defer tmpfile.Close()  //关闭上传的文件,不然的话会出现临时文件不能清除的情况
	path := "/home/ocena/" + "20181212.jpg"  //设置保存路径
	beego.Info("Header:", fheader.Header) //map[Content-Disposition:[form-data; name="123"; filename="upimage.jpg"] Content-Type:[image/jpeg]]
	beego.Info("Size:", fheader.Size)    //114353
	beego.Info("Filename:", fheader.Filename)  //upimage.jpg
	u.SaveToFile("123", path)
}

postmain模拟发送图片到浏览器:
beego API服务器&客户端浏览器的图片的显示与保存_第2张图片

你可能感兴趣的:(#,golang)