Я все еще новичок в 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;
}
}
Как уже упоминалось, вам нужно забрать исходное расширение имени файла, используя
$_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 . '" />';
Или если у вас уже есть куча изображений с неизвестным типом, хранящимся в базе данных, возьмите первые три байта и посмотрите, что он говорит, и сгенерируйте свой суффикс.
Вы пытаетесь найти расширение файла или, в данном случае, изображения.
Для этого вы можете использовать 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
.