Я пытаюсь показать встроенное изображение на странице. Он обслуживается контроллером 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 );
}
}
Когда я загружаю изображение в Chrome of FF, появляется окно загрузки. Я знаю, что, если браузер не может отобразить содержимое, встроенное в него, оно все равно будет принудительно загружено, но это изображения в формате PNG и GIF, которые в противном случае отображаются в браузере. В IE это не вызывает загрузку, но отображает изображение в ASCII.
Если я закомментирую весь случай изображения, то FF и Chrome отобразят ASCII, но не изображение.
Я думал, что установка типа контента позволит FF и Chrome показывать фактическое изображение, а также позволит использовать местоположение в качестве источника.
Javascript и CSS показывают, конечно, хорошо.
У кого-нибудь есть идеи, как сделать так, чтобы изображения отображались правильно?