beego:将服务器上的图片显示到客户端浏览器

发布时间 2023-11-17 17:39:12作者: 珊瑚贝博客

来源:http://www.shanhubei.com/archives/2840.html

将服务器上的图片显示到客户端浏览器

// @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))
}
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)
}