if ($_FILES["image1"]["size"]!=0) {
$data1 = addslashes(fread(fopen($_FILES["image1"]["tmp_name"],"r"),filesize($_FILES["image1"]["tmp_name"])));
$smarty->assign("data1", $data1);
} 上述图片传到tpl后
{html_image file={$data1} }出一大堆乱码及Error
Notice: Smarty error: html_image: unable to find
$data1 = addslashes(fread(fopen($_FILES["image1"]["tmp_name"],"r"),filesize($_FILES["image1"]["tmp_name"])));
$smarty->assign("data1", $data1);
} 上述图片传到tpl后
{html_image file={$data1} }出一大堆乱码及Error
Notice: Smarty error: html_image: unable to find
{html_image file="a.jpg"}
会生成
<img src="a.jpg"/>
也就是说file赋值的是图片的文件名,而不是数据流。PHP是不能既输出HTML,又输出图片的数据流的,必须要将文件存放在一个地方。
如果是存在一个文件中,直接指定路径名就可以了;
如果是存在数据库中,那就要新建一个PHP文件,大致代码如下:
pic.php$result = mysql_query('select data from pic where id=' . $_GET['id']);//注意防注入
$row = mysql_fetch_row($result);
header('content-type:image');//指定头信息,说明该文件输出的是图片的数据流
echo $row[0];a.htm<img src="pic.php?id=1"/>a.tpl
{html_image file="pic.php?id=1"}
header('content-type:image');
echo $data1;
这样的显示方式,而查不到<img src=...>显示图片的数据流。看来上传的图片只能用文件存了,用MySQL存有自找麻烦的感觉...