首页 > 其他分享 >beego:将服务器上的图片显示到客户端浏览器

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

时间:2023-11-17 17:46:26浏览次数:35  
标签:beego 浏览器 image Ctx jpg Content Header 客户端

来源: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)
}

 

标签:beego,浏览器,image,Ctx,jpg,Content,Header,客户端
From: https://www.cnblogs.com/shanhubei/p/17839355.html

相关文章

  • Dash应用浏览器端回调常用方法总结
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master大家好我是费老师,回调函数是我们在Dash应用中实现各种交互功能的核心,在绝大多数情况下,我们只需要以纯Python的方式编写常规服务端回调函数即可,这也贯彻了Dash无需编写javascript即可构建web应用的......
  • 第10章 Qt 对话框--实现浏览器和用户的交流
    Qt对话框--实现浏览器和用户的交流用户登录窗口--升级为模态对话框这里不是转到槽而是点击信号槽方法,转到槽是自己编写代码反应的逻辑浏览器用户登录窗口与主窗口切换导入对应的指针按照需求绑定退出的信号,为上传功能添加标准对话框本章小结......
  • Pycham浏览器本地联调
    第一步安装node没用node环境要先安装node下载地址:https://nodejs.org/en/第二步安装node-inspect代码:npminstall-gnode-inspect(全局安装)   修改完点击apply(应用)第三步:打开要调试的代码,点击调试 第四步:打开chrome浏览器打开chrome://inspect/#devices ......
  • Chrome浏览器导出HTTPS证书
    点证书小锁无效证书也可以导出进入证书界面到详情中,导出证书......
  • setTimeout 是浏览器环境提供的,JS 标准没有规定。不是JavaScript的全局函数,是浏览器(宿
    下列哪些函数是JavaScript的全局函数?AencodeURIBparseFloatCsetTimeoutDeval正确答案:ABD答案:A、B、D个人记忆方法:6(编码相关)+2(数据处理)+4(数字相关)+1(特殊)编码相关:escape()、unescape()、encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent......
  • 抖音批量私信群发工具,非脚本,cookie多账号uid安全码,谷歌浏览器内核
    为什么说是谷歌浏览器内核呢?因为它调用的是谷歌浏览器内核,调用你本地电脑上安装的谷歌浏览器,比如cookie提取还有原创,以及网页的填表都是直接调用你电脑的谷歌浏览器内核,所以安全性和稳定性非常高,用精易VIP模块开发的,支持导入抖音用户ID,然后实现批量群发私信的效果,因为是cookie原理......
  • 第9章 窗口和布局综合应用--编写云对象存储浏览器主界面(综合运用,非常重要!)
    除了每章小结以外,这节课是对前面所学知识点的综合运用,非常重要非常重要看完每一小节再跟着敲窗口和布局综合应用--编写云对象存储浏览器主界面(巩固加深课)很重要!界面最好是手敲,跟敲......
  • 第7章 Qt 窗口--开发云对象存储浏览器的登录窗口
    Qt窗口--开发云对象存储浏览器的登录窗口本章导学学习常用的控件,通过文档使用控件窗口基本知识讲解(代码7-2)生活中的窗口是连接人与外面风景的桥梁,计算机的窗口是连接人和操作系统资源的桥梁,并且更加方便,使用命令行太难了任务栏的应用程序上一般为顶层窗口,顶层窗......
  • 第8章 Qt 布局管理--动态调整浏览器登录
    Qt布局管理--动态调整浏览器登录控件没有跟随窗口变大的位置布局管理器概念及原理讲解参考值:控件变化的最小限度扩展策略:水平垂直扩展时扩展的方案都拉伸还是只拉伸,还有保持不变的方案比利:多个控件分别按多少比利1:1间隙:美观边距:美观这块吃实践,暂时放着··......
  • chrome浏览器报Cannot read properties of undefined (reading 'getUserMedia')
    chrome访问摄像头的时候可能报这个错误。使用https协议可以解决这个问题,如果不能使用https可以通过修改chrome配制解决。在chrome地址栏输入chrome://flags/#unsafely-treat-insecure-origin-as-secure在Insecureoriginstreatedassecure的输入框输入要打开网页的地址如http......