ham*_*tar 7 php codeigniter image content-disposition http-headers
我正试图在页面上显示内嵌图像.它由一个codeigniter控制器提供服务.
class Asset extends MY_Controller {
function index( $folder, $file ) {
$asset = "assets/$folder/$file";
if ( !file_exists( $asset ) ) {
show_404();
return;
}
switch ( $folder ) {
case 'css':
header('Content-type: text/css');
break;
case 'js':
header('Content-type: text/javascript');
break;
case 'images':
$ext = substr( $file, strrpos($file, '.') );
switch ( $ext ) {
case 'jpg':
$ext = 'jpeg';
break;
case 'svg':
$ext = 'svg+xml';
break;
}
header('Content-Disposition: inline');
header('Content-type: image/'.$ext);
}
readfile( $asset );
}
}
Run Code Online (Sandbox Code Playgroud)
当我在Chrome的VC中加载图像时,会弹出下载窗口.我知道当浏览器无法显示内联内容时,无论如何都会强制下载,但这些是PNG和GIF图像,否则会在浏览器中显示.在IE中它不强制下载,但它以ASCII显示图像.
如果我注释掉整个图像的情况,FF和Chrome都会显示ASCII而不是图像.
我认为设置内容类型将允许FF和Chrome显示实际图像,并允许该位置用作src.
javascript和css当然很好.
任何人都有任何想法如何使图像正确显示?
尝试删除Content-disposition标头.默认情况下,它们应该以内联方式显示.
无论如何,你应该做错事.我刚刚在Opera和IE中进行了测试,他们确实使用内容处置标题内嵌显示图像.我用了:
<?php
header('Content-Disposition: inline');
header('Content-type: image/png');
readfile('Untitled.png');
Run Code Online (Sandbox Code Playgroud)
使用浏览器的开发工具检查响应标头.
编辑
可能这个错误导致了这个问题:
<?php
echo substr( "file.ext", strrpos("file.ext", '.') );
Run Code Online (Sandbox Code Playgroud)
给出".ext"而不是"ext".替换strrpos()+ 1.
| 归档时间: |
|
| 查看次数: |
16697 次 |
| 最近记录: |