Заголовок содержания-disposition:inline разве показывает, что изображения не встроят?

Я пытаюсь показать изображение, встроенное на странице. Это подается 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 FF раскрывается окно загрузки. Я знаю, когда браузер не сможет отобразить содержание, встроенное, это вызовет загрузку так или иначе, но это PNG и изображения GIF, которые отображаются в браузере, прекрасном иначе. В IE это не вызывает загрузку, но это отображает изображение в ASCII.

Если я комментирую весь случай изображения это, FF и Chrome оба отображают ASCII, но не изображение.

Я думал, устанавливая тип контента, позволит FF и Chrome показывать действительный образ и также позволять местоположению использоваться в качестве src.

Шоу JavaScript и CSS, прекрасные, конечно.

Кто-либо получил какие-либо идеи, как я могу сделать шоу изображений правильно?

7
задан Nakilon 11 January 2013 в 20:17
поделиться

1 ответ

Попробуйте удалить заголовок Content-disposition. По умолчанию они все равно должны отображаться встроенными.

В любом случае, ты должен делать что-то не так. Я только что тестировал в Opera и IE, и они действительно отображают изображение, встроенное в заголовок content-disposition. Я использовал:

<?php
header('Content-Disposition: inline');
header('Content-type: image/png');

readfile('Untitled.png');

Используйте инструменты разработчика вашего браузера, чтобы проверить заголовок ответа.

РЕДАКТИРОВАТЬ

Вероятно, проблема связана с этой ошибкой:

<?php
echo substr( "file.ext", strrpos("file.ext", '.') );

дает ".ext", а не "ext". Замените strrpos () + 1.

6
ответ дан 7 December 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: