Home  >  Article  >  php教程  >  PHP & “Data” URL scheme

PHP & “Data” URL scheme

WBOY
WBOYOriginal
2016-06-06 20:07:35980browse

作者: Laruence( ) 本文地址: http://www.laruence.com/2012/08/30/2731.html 转载请注明出处 缘起最近的一个Feature Request: #62961 早在PHP5.2.0开始, Data URL Scheme(RFC:2397)就已经被PHP的Stream wrapper支持了. 基本上所有的对文件操作的API, 都迁移

  • 作者: Laruence(PHP & “Data” URL scheme PHP & “Data” URL scheme PHP & “Data” URL scheme PHP & “Data” URL scheme)
  • 本文地址: http://www.laruence.com/2012/08/30/2731.html
  • 转载请注明出处

缘起最近的一个Feature Request: #62961

早在PHP5.2.0开始, Data URL Scheme(RFC:2397)就已经被PHP的Stream wrapper支持了.

基本上所有的对文件操作的API, 都迁移到的了PHP stream上, 所以, 绝大部分对文件操作的API都是支持Data URL的.

今天这个文章, 就是再次给大家提个醒, 当某个API需要操作对象是文件的时候, 我们其实是可以采用Data URL让他接受一个文件内容字符串的.

比如在#62961中, 请求PHP提供一个exif_imagetypefromstring API, 因为目前的exif_imagetype API只接受文件名, 而提出者已经得到了文件内容在内存中, 不希望只能通过写到一个临时文件, 然后再调用exif_imagetype .

<?php //we already have $bindata
$tmpfile = tempnam('/tmp', 'upload');
file_put_contents($tmpfile, $bin_data);
$extension = image_type_to_extension(exif_imagetype($tmpfile));
unlink($tmpfile);

那么, 这个时候, 我们就可以借助Data URL了:

<?php //we already have $bindata
$base64_data = base64_encode($bin_data);
$extension =
   image_type_to_extension(exif_imagetype("data://image/;base64," . $base64_data ));

另外, Data URL还有一个比较常见的使用场景, 比如下面这个图(大家可以查看源代码):
Yaf logo

基本上, 现在主流的浏览器都支持, 这样的方式可以减少一次客户端请求图片.

最后, 此文完全是为了凑数而发, 之前不知道的人, 请笑纳, 以前就知道的人, 请忽略, 嘿嘿


Comments

  • 2012/08/30, charles writes: 科普
  • 2012/08/30, 非洲黑馒头 writes: 学习了
  • 2012/08/30, 破月亮 writes: 学习了,求鸟哥多发帖子多扫盲
  • 2012/08/30, sk.c writes: 第一次看到Data URL...不过貌似ie 6不支持...好吧,我们不需要兼容IE7以下的了 =。=
  • 2012/08/30, POP writes: 学习了,顺便把相关的知识补补。
  • 2012/08/30, 海纳百川 writes: 学习啦。
  • 2012/08/30, 天涯 writes: @sk.c ie7下也不支持呢
  • 2012/08/30, 老黎 writes: IE是非主流...
  • 2012/08/30, dvaknheo writes: 那还不如加个函数: makefile($bin_data) { $base64_data = base64_encode($bin_data); return ("data://image/;base64," . $base64_data )); }
  • 2012/08/30, 奇言妙事-文学奇谈小小说阅读xlinblog.sinaapp.com » PHP & “Data” URL scheme writes: [...] 本文地址: http://www.laruence.com/2012/08/30/2731.html [...]
  • 2012/08/31, logiz writes: 第一次见这东西。
  • 2012/09/11, PHP & “Data” URL scheme树林/咖啡 成都专业php网站制作 | 树林/咖啡 成都专业php网站制作 writes: [...] 风雪之隅 ? PHP应用 Posted in: php / Tagged: scheme, “Data” [...]
  • 2012/12/06, 关于PHP的编译和执行分离 | 5iphp writes: [...] PHP & “Data” URL scheme [...]
  • 2013/04/30, PHP & “Data” URL scheme | 午后小憩 writes: [...] 本文地址: http://www.laruence.com/2012/08/30/2731.html [...]
  • 2013/05/01, 关于语言的选择-选易用的 | 午后小憩 writes: [...] PHP & “Data” URL scheme [...]

Related posts:

  • JsonSerializable接口
  • shell下发推脚本
  • PHP5.2.x + APC的一个bug的定位
  • PHP Taint – 一个用来检测XSS/SQL/Shell注入漏洞的扩展
  • Curl的毫秒超时的一个”Bug”

Copyright © 2010 风雪之隅 版权所有, 转载务必注明. 该Feed只供个人使用, 禁止未注明的转载或商业应用. 非法应用的, 一切法律后果自负. 如有问题, 可发E-mail至my at laruence.com.(Digital Fingerprint: 73540ba0a1738d7d07d4b6038d5615e2)
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn