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 

解决方案 »

  1.   

    smarty中的html_image只是帮助你生成img标签,即:
    {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"}
      

  2.   

    啊~、我说怎么只看到
    header('content-type:image');
    echo $data1; 
    这样的显示方式,而查不到<img src=...>显示图片的数据流。看来上传的图片只能用文件存了,用MySQL存有自找麻烦的感觉...