HTML Определите, какое расширение изображения в теге <img>

0

Я все еще новичок в PHP и HTML в целом. Я пытаюсь выполнить сценарий, который я могу загрузить, а затем отображает изображение на панели. Он работает по назначению, но теперь у меня проблема, если загруженное изображение имеет разные расширения.

Например, обычное изображение, которое я загружаю, чтобы показать его на панели, - JPEG. Но когда я загружаю PNG-изображение, изображение не будет загружаться, потому что тэг уже жестко запрограммирован, чтобы показать все загруженные изображения как.jpg. Панель, которая показывает изображение, выглядит так:

$html  = '<div style="width: 100%"><a href="'.$this->database('source').'" target="_blank"><img alt="'.$this->database('char_name').'-'.$this->database('char_origin').'" src="'.HTML_PATH_PLUGINS_DB.'files/image.jpg" style="width: 100%; height: auto;" /></a></div>';

Я хочу сделать что-то вроде кода, чтобы обнаружить расширение изображения или, возможно, просто использование подстановочных знаков, чтобы браузер загружал изображение независимо от его расширения.

Я попытался заменить.jpg на. *, Но, конечно, он не работает, так как он заключен в "". Я хочу, чтобы там был простой способ сделать это. Я пробовал смотреть на Stackoverflow, но я до сих пор не понимаю, как это сделать. Любая помощь приветствуется. Спасибо.

EDIT: Здесь весь код:

class PLUGIN_PORTRAIT_PANEL extends Plugin
{
    function __construct()
    {
        parent::__construct();

        $this->fields = array(
        'char_name'=>'',
        'char_name_url'=>'',
        'char_origin'=>'',
        'char_origin_url'=>'',
        'source'=>'',
        'image'=>''
        );
    }

    public function dashboard_config()
    {
        global $Language;

        // Character Name
        $html  = Html::label(array('content'=>$Language->get('CHAR_NAME')));
        $html .= Html::input(array('name'=>'char_name', 'type'=>'text', 'value'=>$this->database('char_name')));

        $html .= Html::label(array('content'=>$Language->get('CHAR_NAME_URL')));
        $html .= Html::input(array('name'=>'char_name_url', 'type'=>'text', 'value'=>$this->database('char_name_url')));

        // Character Origin
        $html .= Html::label(array('content'=>$Language->get('CHAR_ORIGIN')));
        $html .= Html::input(array('name'=>'char_origin', 'type'=>'text', 'value'=>$this->database('char_origin')));

        $html .= Html::label(array('content'=>$Language->get('CHAR_ORIGIN_URL')));
        $html .= Html::input(array('name'=>'char_origin_url', 'type'=>'text', 'value'=>$this->database('char_origin_url')));

        // Image Source
        $html .= Html::label(array('content'=>$Language->get('SOURCE')));
        $html .= Html::input(array('name'=>'source', 'type'=>'text', 'value'=>$this->database('source')));

        // Image
        $html .= Html::label(array('content'=>$Language->get('UPLOAD')));
        $html .= Html::input(array('name'=>'image', 'type'=>'file'));
        $html .= Html::div(array('class'=>'tip', 'content'=>$Language->get('UPLOAD_NOTICE')));

        return $html;
    }

    public function blog_body()
    {
        $html  = '<div style="width: 100%"><a href="'.$this->database('source').'" target="_blank"><img alt="'.$this->database('char_origin').'-'.$this->database('char_name').'" src="'.HTML_PATH_PLUGINS_DB.'ddok/'.$this->database('image').'" style="width: 100%; height: auto;" /></a></div>';
        $html .= '<a href="'.$this->database('char_name_url').'" target="_blank">'.$this->database('char_name').'</a> from <a href="'.$this->database('char_origin_url').'" target="_blank">'.$this->database('char_origin').'</a>.';

        return $html;
    }
}
  • 0
    Зачем делать хардкод? Это просто простая задача. Просто выберите нужное изображение из базы данных
  • 0
    Это то, что я пытаюсь сделать прямо сейчас. Как добавить загруженное изображение в базу данных? Я загрузил весь текущий код, если это поможет.
Показать ещё 5 комментариев
Теги:
image

2 ответа

0
Лучший ответ

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

$_FILES['theFormField']['name']

и сгенерируйте ваш суффикс. Недостатки, но все же:

//on post
//get suffix.
$a = explode('.',$_FILES['theField']['name']);
$theSuffixToBeSavedInDatabase = $a[1];

//later, upon view
//get the suffix stored in db.
$suffix = $rec['FileSuffix']
echo '<img src='" . $rec['RadomFileNameWithoutSuffix'] . '.' . $suffix . '" />';

Или если у вас уже есть куча изображений с неизвестным типом, хранящимся в базе данных, возьмите первые три байта и посмотрите, что он говорит, и сгенерируйте свой суффикс.

1

Вы пытаетесь найти расширение файла или, в данном случае, изображения.

Для этого вы можете использовать pathinfo(), как указано в PHP.

Таким образом, он будет использоваться так, как показано ниже в этом примере.

$file = pathinfo('/www/htdocs/inc/black.png');
echo $file['extension'], "\n";

Вот пример IDEONE для примера.

Это возвращает расширение файла .png.

Теперь вам также потребуется имя файла, так что это делается, как показано ниже:

echo $file['filename'], "\n"; // since PHP 5.2.0

Это вернет black.

  • 0
    Спасибо за ваш ответ, но как мне получить расширение для отображения внутри моего тега <img>?
  • 0
    Вы можете использовать мой ответ как строительный блок.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню