请多时候你会发现浏览器即可显示图片(文件),也可提供图片(文件)下载。到底如何实现?什么代码控制的呢?
关键技术点
HTTP响应头属性
1、Content-Type
2、Content-Disposition (提供下载的实现)
3、Content-Length
下载
实现代码如下
$file = './img/fang.jpg';
$mode = 'rb';
header('Content-Disposition:Attachment;filename='.basename($file));
$finfo = new Finfo(FILEINFO_MIME_TYPE);
$mime = $finfo->file($file);
header('Content-Type: '.$mime);
header('Content-Length:'.filesize($file));
$handle = fopen($file, $mode);
while(!feof($handle)){
echo fgets($handle, 1024);
}
注意
在IE中,没有header('Content-Disposition:Attachment;filename='.basename($file));
这句代码也可实现下载,只要header('Content-Type:image/jpg');
就会提供下载
显示
实现代码如下
$file = './img/fang.jpg';
$mode = 'rb';
$finfo = new Finfo(FILEINFO_MIME_TYPE);
$mime = $finfo->file($file);
header('Content-Type: '.$mime);
header('Content-Length:'.filesize($file));
$handle = fopen($file, $mode);
while(!feof($handle)){
echo fgets($handle, 1024);
}
注意
在IE中,上面代码会没有效果(依然是下载),在IE中,要显示必须header('Content-Type: text/plain');
不能设为image/jpg
,这种做法不止兼容IE,其他浏览器也兼容。还有一种方法
直接访问图片地址
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。