我一般都是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替换.jpg,但当然,它不起作用,因为它包含在“”中。我希望有一个简单的方法来做到这一点。我试着查看Stackoverflow,但我仍然不明白如何做到这一点。任何帮助表示赞赏。谢谢。
编辑:这是整个代码:
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 :(得分:1)
您正在尝试查找文件的扩展名,或者在本例中是图像。
为此,您可以使用PHP中提供的pathinfo()。
因此,它会像这样使用,如下例所示。
$file = pathinfo('/www/htdocs/inc/black.png');
echo $file['extension'], "\n";
以下是IDEONE的示例。
这将返回文件扩展名.png
。
现在,您还需要文件名,因此如下所示:
echo $file['filename'], "\n"; // since PHP 5.2.0
这将返回black
。
答案 1 :(得分: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 . '" />';
或者,如果您已经在数据库中存储了一堆未知类型的图像,请抓住前三个字节并查看它所说的内容并从中生成后缀。