`
darkjune
  • 浏览: 301287 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Http服务器如何在HTTP response中传送二进制图片

    博客分类:
  • HTTP
阅读更多

要想知道如何传送这些二进制,先来点二进制文件的背景知识

 

 —文件魔数 magic number:

操作系统的文件,其起始的几个字节的内容是固定的。根据这几个字节的内容就可以确定文件类型,因此这几个字节的内容被称为魔数 (magic number), 对于GIF,JPG这种二进制跨系统都是支持的(linux/Windows),对于.exe .bin这类操作系统相关的就不一样了。

 

如何查看? 用UltraEdit直接以二进制方式打开这些文件。

常见魔数

—JPEG (jpg),文件头:FFD8FF 

—PNG (png),文件头:89504E47 

—GIF (gif),文件头:47494638

—ZIP Archive (zip),文件头:504B0304

 —Java Class ,  文件头:CAFEBABE

 

 我们使用Fiddler截获浏览器的HTTP响应,可以看到请求的是一个PNG图片:

GET /**/bg-header.png

为了方便查看,将响应头调成16进制模式。

 绿色的字都是标准的HTTP响应头(response head),然后根据HTTP/1.1标准,响应头之后跟上0D0A, 0D0A

这个就是系统的换行符, 是windows标准的\r\n,响应头跟image的实际二进制数据间有一个空行,然后跟上实际的数据,可以看到蓝色里圈住的文件魔数是89504E47,正是PNG的文件头。为了验证这个二进制的有效性,用工具提供的更能save bytes,将二进制内容存储到本地:



 



 可以看到本地文件正是这样保存的,一个图片。这样,一个http的图片内容就这样存到了本地浏览器缓存,并由浏览器使用。

  • 大小: 386.5 KB
  • 大小: 14.9 KB
  • 大小: 14.4 KB
分享到:
评论

相关推荐

    如何将图片转换成二进制存储

    存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[]. 1.参数是图片路径:返回Byte[]类型: public byte[] GetPictureData(string imagepath) { /**/////...

    显示二进制存储的图片控件

    对于以二进制形式存储在数据库中的图片,以前都是采用在单独的aspx页面Response.BinaryWrite写出、Image控件设置ImageUrl属性调用的方法来显示,于是将分散页面功能写成控件,以方便大家调用

    二进制流下载zip或单个文件(spring + angular Js).html

    二进制文件下载(spring+angularJs),正确完后曾业务需求,优化功能,实现前后端一致性,保证代码质量

    C#中图片、二进制与字符串的相互转换方法

    本文实例讲述了C#中图片、二进制与字符串的相互转换方法。分享给大家供大家参考,具体如下: protected void Button1_Click(object sender, EventArgs e) { //图片转二进制 byte[] imageByte = GetPictureData...

    二进制转换图片.rar

    二进制转换图片 OutputStream o = response.getOutputStream(); // 将图片转换成字符串 File f = new File("f:\\Vista.png"); FileInputStream fis = new FileInputStream( f ); byte[] bytes = new byte...

    vue+axios展示二进制文件流图片

    1、const url = URL.createObjectURL(new Blob([res])) // 这种方法需要图片服务器不要添加限制 2、const url = `[removed]${btoa(new Uint8Array(res).reduce((data, byte) => data + String.fromC

    vue解析后端返回的二维码图片数据流

    尝试用二进制大对象Blob解析,然后生成图片的URL,代码如下: // QRCode 为后端接口返回的图片数据流 const blob = new Blob([QRCode]) const url = window.URL.createObjectURL(blob) 但是把生成的URL链入img的src...

    STM32二进制文件合成工具

    This is a response to the STM32 will BootLoad binaries and APP synthesis Bin and Hex tool that enables the user need only burn once procedures. Software, there are detailed instructions for use, ...

    asp.net实现图片以二进制流输出的两种方法

    本文实例讲述了asp.net实现图片以二进制流输出的两种方法。分享给大家供大家参考,具体如下: 方法一: System.IO.MemoryStream ms = new System.IO.MemoryStream(); System.IO.Stream str = new FileUpload()....

    vue下载二进制流图片操作

    1、应项目要求,后台返回二进制流,而且乱码 2、红色为必须 this.$axios.post('/fishweb/agent/downLoad',this.stringify({filename:'qrCode.jpg'}), { responseType: 'arraybuffer' //指定返回数据的格式为blob...

    详解nodeJS之二进制buffer对象

    本篇文章主要介绍了nodeJS之二进制buffer对象,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    在vue中使用axios实现post方式获取二进制流下载文件(实例代码)

    第一步,在 axios 请求中加入参数,表示接收的数据为二进制文件流 responseType: 'blob' 第二步,在拿到数据流之后,把流转为指定文件格式并创建a标签,模拟点击下载,实现文件下载功能 let blob = res.data let reader =...

    php读取二进制流(C语言结构体struct数据文件)的深入解析

    不过php提供了pack和unpack函数,用来进行二进制数据(binary data)和php内部数据的互转:复制代码 代码如下:string pack ( string $format [, mixed $args [, mixed $…]] ) //Pack given arguments into binary ...

    Jmeter之后置处理器BeanShell PostProcessor与二进制响应-附件资源

    Jmeter之后置处理器BeanShell PostProcessor与二进制响应-附件资源

    服务器提交了协议冲突. Section=ResponseStatusLine解决方法

    用HttpWebrequest向服务器POST或GET数据时,有的时候或者有的机子会出现"服务器提交了协议冲突. Section=ResponseStatusLine"的错误,我用文档整理出来可用解决方法

    response生成图片验证

    生成图片验证码原理是:随机生成一张图片,里面有一些随机字符,用户需要输入里面的验证字符,才能进入某一系统里面。本示例利用的是Servlet的response对象将生成的图片直接输出到了客户端的页面上。

    JSP隐含对象response实现文件下载

    (1)在JSP中实现文件下载最简单的方法是定义超链接指向目标资源,用户单击超链接后直接下载资源,但直接暴露资源的URL也会带来一些负面的影响,例如容易被其它网站盗链,造成本地服务器下载负载过重。 (2)另外一...

    flatbin:用于解析简单二进制文件的微型 JavaScript 实用程序

    基本原理如果您是 WebGL 开发人员,您经常希望从服务器请求二进制数据,并从中提取一些类型化数组以及一些元数据: var xhr = new XMLHttpRequest ( ) ;xhr . open ( 'GET' , '/path/to/graphics_data.bin' , true )...

    qhs2 2 inst jar http服务器

    一款新型的http服务器软件 名称为快速http服务器 简称为qhs qhs主要用Java语言编写 可在WindowsXP专业版 Linux等操作系统安装 运行 安装qhs前需先安装jdk7 qhs的安装目录有用户手册(在manual目录) api文档(在...

    大数据爬虫词云图显示

    如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型 解析内容 得到的内容可能是HTML,可以用正则表达式,页面解析库...

Global site tag (gtag.js) - Google Analytics