比如微信这张。
http://mmbiz.qpic.cn/mmbiz/WRGz2LWLARDP7oiaL5yRvMnApnHypOYfSRNxfB0YYCx7KReEic6lZBWroOuKsHicQftwSfpTXuuKY0ZEmBMVbcgkQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5
url里面没有扩展名。
http头的话,估计有点线索,但是没有直接的答案。这种图片如何获得扩展名和文件名?
文件在文件头中会存有扩展名,这样浏览器才会知道链接里到底是什么东西。
对于图片,如果想要获取文件类型的话,可以先把图片写到canvas中,之后再去读这个canvas,就能读到文件类型了。
201707111723补充:
文件头是文件头,content-type是content-type,不要搞混了。
如果你有linux使用经验的话,可以使用file来查看一下:
很多标准格式的文件,都会在文件头(文件的开头部分!)标明自己是什么格式:
另外jpg和jpeg是一个玩意。使用JPEG格式压缩的图片文件都叫JPEG文件,.jpeg、.jpe、.jfif以及.jif都是一个东西。
url 中的 wx_fmt=jpeg
应该就是拓展名
如果是文件不是码流的话,要自己判断文件的存储格式,不同的文件格式有不同的协议,而一般协议里面的都会会有固定的字节,可以作为识别图片格式的依据。
比如 BMP 的 "BM"
424d 3a05 0600 0000 0000 3600 0000 2800 BM:.......6...(.
jpeg 的 "0xFFD8" 以及 “JFIF0”(不一定都有)
ffd8 ffe0 0010 4a46 4946 0001 0101 0060 ......JFIF.....`
PNG 的前 8 个字节
8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
至于其他格式么,我就不太了解了,不过我觉得肯定也有固定的东西,自己去查每种格式的详细情况呗。
就是看文件头啊
webp就是文件的格式
搬运自维基百科
WebP(发音weppy)5,是一种同时提供了有损压缩与无损压缩的图片文件格式[7],派生自视频编码格式VP8[8],是由Google在购买On2 Technologies后发展出来[9]
https://developers.google.com/speed/webp/
浏览器在下载的时候只是转化成其他电脑可以打开的格式罢了