• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > PHP开发 > 通过php实现图片上传功能

    通过php实现图片上传功能

    作者: 分类:PHP开发 点击: 3,318 次
    wordpress CMS主题:ssmay主题

      在上一章中,我们介绍过如何通过php给图片创建缩略图,但是,一般我们不会单独去创建缩略图,而是在上传图片成功后,同时生成该图片的缩略图。也就是说,如果没有上传图片成功,就不创建缩略图片。那么,怎样通过php来实现上传图片功能呢?请接着往下看吧。

      1、网页前端html代码(这里只提供一个简单案例):

      <form enctype="multipart/form-data" action="add.php" method="post">
      <input type="file" name="fileto" id="fileto"/>
      <input type="submit" value="上传">
      </form>

      上面代码中,enctype="multipart/form-data" 这句代码编码类型,是图片上传必须要加上的,否则就不能实现上传功能。其它的,可以根据自己的需求来填写。

      2、图片上传代码,可以创建一个add.php文件,把下面的代码放到这个文件中:

      <?php
      header("content-type:text/html; charset=utf-8");

      $imgs = $_FILES["fileto"]["tmp_name"]; //上传图片后的临时图片名
      $img = $_FILES["fileto"]["name"]; //上传的图片名
      $type = $_FILES["fileto"]["type"]; //上传的图片类型
      $img_arr = array("image/pjpeg","image/jpeg","image/gif","image/png","image/x-png"); //图片类型数组,image/pjpeg和image/x-png是IE6下的。

      date_default_timezone_set("Asia/shanghai"); //把服务器时间改成北就时间

      // 第一步:判断是否在上传文件,
      if(!empty($_FILES["fileto"]["name"])){ //判断 有没有上传文件
      $img_a = explode(".",$img); //把图片名数组化
      $img_n = date("YmdHis",time()).".".strtolower($img_a[1]); //把 图片名前缀名改成“时间+随机数”,后缀大写改成小写
      }

      // 第二步:判断上传中是否有错误,如文件的大小
      if($_FILES['fileto']['error'] > 0){ //判断是否有错误
      switch($_FILES['fileto']['error']){
      case 1: echo "<script>alert('文件大小超过了php.ini中upload_max_filesize选项限制的值.'); history.back();</script>";
      break;
      case 2: echo "<script>alert('文件大小超过了表单中 MAX_FILE_SIZE 选项指定的值.'); history.back();</script>";
      break;
      case 3: echo "<script>alert('文件只有部分被上传.'); history.back();</script>";
      break;
      case 4: echo "<script>alert('没有文件被上传.'); history.back();</script>";
      break;
      case 5: echo "<script>alert('上传文件大小为0.'); history.back();</script>";
      break;
      }
      exit;
      }

      // 第三步:判断上传的文件是不是图片
      if(in_array($type,$img_arr)){ //判断上传的图片类型 是否在图片类型数组中
      switch($type){
      case $img_arr[0]:
      break;
      case $img_arr[1]:
      break;
      case $img_arr[2]:
      break;
      case $img_arr[3]:
      break;
      case $img_arr[4]:
      break;
      default:echo "<script>alert('图片必须是jpg\gif\png格式'); history.back();</script>";
      exit;
      }
      }else{
      echo "<script>alert('你上传的不是图片。'); history.back();</script>";
      exit;
      }

      // 第四步:
      if(is_uploaded_file($imgs)){ //判断是否是通过 HTTP POST 上传的。
      if(is_dir("upload")){ //判断 upload 文件夹目录是否存在,如果存丰
      move_uploaded_file($imgs,"upload/".$img_n); //就移动临时图片 放到 upload 文件夹里
      }else{
      mkdir("upload"); //如果upload文件夹不存在,就新建一个
      move_uploaded_file($imgs,"upload/".$img_n); //然后移动临时图片 放到 upload 文件夹里
      }

      $images = "/lib/tpl/upload/".$img_n; //上传成功后的图片相对路径
      header("location:config.php?url=".$images);
      }else{
      echo "<script>alert('没有上传成功,请重新上传。'); history.back();</script>";

      }

      通过上面2步,我们就实现了图片上传功能。当然,我们也可以把这个图片上传php代码封装到一个php函数中,让我们今后能灵活应该,可以随时调用。

      3、图片上传函数      代码如下:

      //图片上传函数://参数:$info 上传图片信息   $path 上传后保存图片的文件夹路径
      function upload_image($info,$path){
      //获取图片后缀
      $pre = strrchr($info["name"],".");
      $img_name = date("YmdHis").$pre;

      //错误过滤
      if($info["error"]>0){
      switch($info["error"]){
      case 1:
      echo "文件大小超过php.ini设置的大小 2M。";
      break;
      case 2:
      echo "文件大小超过表单设置的大小。";
      break;
      case 3:
      echo "文件只有部分被上传。";
      break;
      case 4:
      echo "没有文件被上传。";
      break;
      case 6:
      echo "找不到临时文件夹。";
      break;
      case 7:
      echo "文件写入失败。";
      break;
      }
      echo "<a href='add.php'>返回添加图片页面</a>";
      exit;
      }

      //图片类型过滤
      $pic_arr = array("image/jpeg","image/jpg","image/pjpeg","image/png","image/x-png","image/gif");
      if(!in_array($info["type"],$pic_arr)){
      echo "上传的文件必须是 jpg、png、gif格式的。";
      echo "<a href='add.php'>返回添加图片页面</a>";
      exit;
      }

      //图片大小过滤
      if($info["size"]>(2*1024*1024)){
      echo "上传图片的大小不能超过 2M。";
      echo "<a href='add.php'>返回添加图片页面</a>";
      exit;
      }

      if(is_uploaded_file($info["tmp_name"])){
      move_uploaded_file($info["tmp_name"],$path.$img_name);
      return $img_name;
      }
      }

      然后,在表单提交后的处理文件 add.php中只需添加如下代码:

      $info = $_FILES["fileto"]; //获取图片信息 ,fileto 是表单上传name名,
      $pic = upload_image($info,"./upload/"); //返回生成的图片名,返回图片名是为了写入数据库

      //如果想同时生成缩略图,可以把上一章的缩略图函数直接拿来用,如下:
      image_scale("./upload/".$pic, 100, 100);

      好了,今天就介绍到这里,如果,你也想使用图片上传功能,正在发愁如何实现的话,可以试试这里的方法哦。

    文章作者:高时银博客
    本文地址:http://wanlimm.com/77201511304896.html
    本文时间:2015-11-30 10:17:04
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    This site uses Akismet to reduce spam. Learn how your comment data is processed.