最近在做一个类似ebay的网页,里面有个upload page能上传物品名称,价格,图片等等到phpmyadmin,其他几个都没有问题,唯有图片不知道该怎么编译code,求人能帮个忙呀

解决方案 »

  1.   

    上传图片大概思路是要指定一个文件夹放图片,数据库只是放一个名字而已。不可能把图片直接放数据库。
    调用图片的时候调用那个文件夹的路径+数据库中的名字。类似于<img src="img/数据库中的名字" />,img这个是你自己定的路径,命名的时候一般都是以时间命名。这样不会重复。还有一步是你在上传的时候可能要取后缀判断之类的,比如只能上传后缀为jpg/png/gif的图。然后移动到那个文件夹中。具体怎么实现你可以搜一下代码,很多的。大概思路就是这样的。创建路径--判断图片--命名图片--把图片移动到你所创建的路径文件夹中--把命名存到数据库中
      

  2.   

    楼上说的很详细了,数据库之保存图片名称(更牛逼点就是保存图片存放路径+名称,如1.jpg或者img/1.jpg),而这些图片应该是放到专门的文件夹底下(如img文件夹)
      

  3.   

    图片直接保存路径名吧,
    比如在www/image文件夹里。
    保存图片URL: http://www.yoursite.com/image/图片名。进数据库
      

  4.   

    尝试了几个代码结果都失败了,不知道有人能写个code给我指导下吗
      

  5.   

     我还是把我的code贴一下大家来看看吧
    conn.php
    <?php
    $host="XXXXX"; //数据库服务器名称
    $user="XXXX"; //用户名
    $pwd="XXXX"; //密码
    $conn=mysql_connect($host,$user,$pwd);
    mysql_query("SET
           character_set_connection=gb2312, 
           character_set_results=gb2312, 
           character_set_client=binary",$conn);
    if ($conn==FALSE)
        {
            echo "<center>服务器连接失败!<br>请刷新后重试。</center>";
            return true;
        }
    $databasename="XXXX";//数据库名称do
    {
        $con=mysql_select_db($databasename,$conn);
    }while(!$con);if ($con==FALSE) 
        {
            echo "<center>打开数据库失败!<br>请刷新后重试。</center>";
            return true;
        }
        
    ?></body>
    </html>upload.php
    <?php
    if ($_GET['action'] == "save"){
    include_once('conn.php');
    include_once('uploadclass.php');
    $title=$_POST['title'];
    $pic=$uploadfile;
    if($title == "")
    echo"<Script>window.alert('对不起!你输入的信息不完整!');history.back()</Script>";
    $sql="insert into upload(title,pic) values('$title','$pic')";
    $result=mysql_query($sql,$conn);
    //echo"<Script>window.alert('信息添加成功');location.href='upload.php'</Script>";
    }
    ?>
    <html>
    <head>
    <title>文件上传实例</title>
    </head>
    <body>
    <form method="post" action="" enctype="multipart/form-data">
    <table border=0 cellspacing=0 cellpadding=0 align=center width="100%">
    <tr>
    <td width=55 height=20 align="center">&nbsp;</TD>
    <td height="16"><table width="48%" height="93" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>标题:</td>
          <td><input name="title" type="text" id="title"></td>
        </tr>
        <tr>
          <td>文件: </td>
          <td><label>
            <input name="file" type="file" value="浏览" >
            <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
          </label></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td><input type="submit" value="上 传" name="upload"></td>
        </tr>
    </table></td>
    </tr>
    </table>
    </form>   </body>
    </html>uploadclass.php
    <?php
    $uploaddir = "upfiles/";//设置文件保存目录 注意包含/
    $type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
    $patch="upload/";//程序所在路径//获取文件后缀名函数
    function fileext($filename)
    {
    return substr(strrchr($filename, '.'), 1);
    }
    //生成随机文件名函数
    function random($length)
    {
    $hash = 'CR-';
    $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
    $max = strlen($chars) - 1;
    mt_srand((double)microtime() * 1000000);
    for($i = 0; $i < $length; $i++)
    {
    $hash .= $chars[mt_rand(0, $max)];
    }
    return $hash;
    }$a=strtolower(fileext($_FILES['file']['name']));
    //判断文件类型
    if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type))
    {
    $text=implode(",",$type);
    echo "您只能上传以下类型文件: ",$text,"<br>";
    }
    //生成目标文件的文件名
    else{
    $filename=explode(".",$_FILES['file']['name']);
    do
    {
    $filename[0]=random(10); //设置随机数长度
    $name=implode(".",$filename);
    //$name1=$name.".Mcncc";
    $uploadfile=$uploaddir.$name;
    }while(file_exists($uploadfile));if (move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile))
    {
    if(is_uploaded_file($_FILES['file']['tmp_name']))
    {echo "上传失败!";
    }
    else
    {//输出图片预览
    echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$uploadfile'></center>";
    echo "<br><center><a href='upload.htm'>继续上传</a></center>";
    }
    }}
    ?>
      

  6.   

    把图片上传到数据库并显示
    blob类型
    <?php
    /*******************************************************
    ** 文件名:upload_file.php
    ** Copyright @ 2009
    ** 创建人:tabor
    ** 日期:2009年7月24日 8:00
    ** 修改人:
    ** 日期:
    ** 描述:文件上传操作以及对图片文件的处理
    ** 版本:
    ********************************************************/
      class upload_file {
        //保存的文件名
       public $file_name;
     //系统中上传文件的临时存放路径
     public $file_tmp_name;
     //文件大小
     public $file_size;
     //完整的文件类型
     public $full_file_type;
     //文件类型
     public $file_type;
     //文件是否覆盖
     public $override = 1;
     //文件的保存路径
     public $file_save_path = '';
     //上传文件大小的最大值 单位是字节 2M
     public public $file_max_size = 210000000;
     //public public $file_max_size = 102400; //构造函数
     function __construct($file_name = '', $file_tmp_name = '', $full_file_type = '', $file_size = '', $file_save_path = '') {
            $this->file_name = $file_name;
            $this->file_tmp_name = $file_tmp_name;
         $this->full_file_type = $full_file_type;
         $this->file_size = $file_size;
         $this->file_save_path = $file_save_path;
     }
        //取得文件的后缀名,即文件类型
     function get_file_type() {
      $type_array = explode('.', $this->file_name);
            return $type_array[count($type_array)-1];
     }
     //判断文件的大小
     function check_size() {
      if($this->file_size > $this->file_max_size) {
       return false;
      }
      return true;
     }
     //取得文件的大小
     function get_size() {
      return intval($this->file_size/1024);
     }
     //上传图片 格式 jpg,png,gif,pjpeg
     function check_upload_pic() {
      $type = $this->get_file_type();
      $type_array = array('jpg', 'png', 'gif', 'bmp');
      foreach($type_array as $value) {
       if($value = $type) {
        return true;
       }
       return false;
      }
     }
     //上传文件 格式 zip rar
     function check_upload_file() {
      $type = $this->get_file_type();
      $type_array = array('jpg','gif','bmp','png');
      foreach($type_array as $value) {
       if($value == $type) {
        return true;
       }
       return false;
      } }
     //判断文件是否存在
     function check_exist() {
      $file = $this->file_save_path.$this->file_name;
      return file_exists($file);
     }
     //上传文件
     function move_upfile() {
      if(!$this->check_upload_pic()) {
       echo "ok1";
       return false;
      }
      else {
       if(!$this->check_size()) {
        echo "ok2";
        return false;
       }
       else {
    //    if($this->check_exist()) {
    //     echo "该文件已存在";
    //     return false;
    //    }
    //    else {
         $path = $this->file_save_path.$this->file_name;
         if(move_uploaded_file($this->file_tmp_name, $path)) {
          return true;
         }
         else {
          return false;
         }//    }
       }
      }
     }
     //将上传的图片打水印
     /**
      * $water_pic_name 将要被打水印的目标图片
      * $water_word     水印文字
      * $path           将来生成水印图片的存放路径
      */
     function create_water_pic($water_word) {
      $type = $this->get_file_type();
      $filename = $this->file_save_path.$this->file_name;
      switch($type) {
       case 'jpg':
       header("content-type:image/jpeg");          //定义输出图像的类型
       $im = imagecreatefromjpeg($filename);       //载入图片
       break;
       case 'png':
       header("content-type:image/png");
       $im = imagecreatefrompng($filename);
       break;
       case 'gif':
       header("content-type:image/gif");
       $im = imagecreatefromgif($filename);
       break;
       case 'bmp':
       header("content-type:image/xbm");          //上传bmp格式存在问题
       $im = imagecreatefromxbm($filename);       //无法打水印
       break;
       default: {
        echo "文件格式不符";
       }
      }
      $textcolor = imagecolorallocate($im, 56, 73,136);  //设定字体的颜色
      $font = "simhei.ttf";      //定义字体
      $word = $water_word;      //水印字符
      $x = imagesx($im);         //获取图片的宽度
      $y = imagesy($im);         //获取文件的高度
      $position_x = $x-80;
      $position_y = $y-10;
      $str = iconv('gbk', 'utf-8', $word);           //将中文文字显示出来的编码过程
      imagettftext($im, 20, 0, $position_x, $position_y, $textcolor, $font, $str);
      //imagejpeg($im);                                //显示图片
      $new = $this->file_save_path.'water'.$this->file_name;     //生成新的文件名
      switch($type) {
       case 'jpg':
          imagejpeg($im, $new);     //生成jpg图像
       break;
       case 'png':
          imagepng($im, $new);      //生成png图像
       break;
       case 'gif':
          imagegif($im, $new);      //生成gif图像
       break;
       case 'bmp':
          imagexbm($im, $new);      //生成bmp图像     该格式的文件处理有问题
       break;
       default: {
        echo "文件格式不符";
       }
      }
      imagedestroy($im);  //结束图形,释放内存空间*/
     }
     //生成缩略图
     /**
      * $pic 图片名 包括其扩展名,但不包括路径
      * $width  将来生成缩略图的宽度
      * $height 将来生成缩略图的高度
      * $path 生成缩略图的存放路径
      */
     function create_thumbnail($width, $height) {
      $type = $this->get_file_type();
      $filename = $this->file_save_path.$this->file_name;
      $img = getimagesize($filename);
      //print_r($img);
      //die();
      switch($img[2]) {
       case 1:
       header("content-type:image/gif");          //定义输出图像的类型
       $im = imagecreatefromgif($filename);            //载入图片
       break;
       case 2:
       header("content-type:image/jpeg");
       $im = imagecreatefromjpeg($filename);
       break;
       case 3:
       header("content-type:image/png");
       $im = imagecreatefrompng($filename);
       break;
       case 6:
       header("content-type:image/xbm");          //bmp格式存在问题
       $im = imagecreatefromxbm($filename);            //无法打水印
       break;
       default: {
        echo "文件格式不符";
       }
      }
      $thumb = imagecreatetruecolor($width, $height);    //创建一个新的空白的面板
      $color = imagecolorallocate($im, 200, 255, 100);   //调色板
      /*bool imagecopyresized ( resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h )
            imagecopyresized() 将一幅图像中的一块正方形区域拷贝到另一个图像中。dst_image 和 src_image 分别是目标图像和源图像的标识符。
      */
      imagecopyresized($thumb, $im, 0, 0, 0, 0, $width, $height, $img[0], $img[1]);
      //imagejpeg($thumb);
      $thumb_path = $this->file_save_path."thumbnail/".$this->file_name;
      switch($img[2]) {
       case 1:
       imagejpeg($thumb, $thumb_path);
       break;
       case 2:
       imagegif($thumb, $thumb_path);
       break;
       case 3:
       imagepng($thumb, $thumb_path);
       break;
       case 6:
       imagexbm($thumb, $thumb_path);
       break;
       default: {
        echo "文件格式不符";
       }
      }
     }
      }
    ?>