PHP入门教程之上传文件实例详解

5年以前  |  阅读数:281 次  |  编程语言:PHP 

本文实例讲述了PHP上传文件的方法。分享给大家供大家参考,具体如下:

Demo1.php


    <form enctype="multipart/form-data" action="Demo2.php" method="post">
      <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
      上传文件: <input type="file" name="userfile" />
      <input type="submit" value="上传" />
    </form>

Demo2.php


    <?php
      //接受上传文件
      //$_FILES;
      //存在,但是空值
      //[userfile][name] 表示上传的文件名
      //[userfile][type] 表示文件类型:例如,jpg 的文件类型为:image/jpeg
      //[userfile][tmp_name]表示上传的文件临时存放的位置 C:\WINDOWS\temp\php28.tmp
      //[userfile][error]表示错误类型,表示没有任何错误。
      //[userfile][size]表示上传文件的大小
      print_r($_FILES);
      echo '<br/>';
      //is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
      //通过 HTTP POST 上传后,文件会存放在临时文件夹下
      $fileMimes = array('image/jpeg','image/pjpeg','image/gif','image/png','image/x-png');
      //判断类型是否是数组里的一种
      if(is_array($fileMimes)){
        if(!in_array($_FILES['userfile']['type'],$fileMimes)){
          echo "<script>alert('本站只允许 jpg,png,gif 图片');history.back();</script>";
          exit;
        }
      }
      //创建一个常量
      define('URL',dirname(__FILE__).'\uploads');
      echo URL;
      //判断目录是否存在
      if(!is_dir(URL)){
        mkdir(URL,0777); //最大权限0777,意思是如果没有这个目录,那么就创建
      }
      define('MAX_SIZE',2000000);
      if($_FILES['userfile']['size'] > MAX_SIZE){
        echo "<script>alert('上传不得超过 2 M');history.back();</script>";
        exit;
      }
      //还有两个问题要验证
      //第二个问题,只允许 JPG 文件
    // if($_FILES['userfile']['type'] != 'image/jpeg' && $_FILES['userfile']['type'] != 'image/pjpeg'){
    //   echo "<script>alert('本站只允许 JPG 图片');history.back();</script>";
    //   exit ;
    // }
    // switch ($_FILES['userfile']['type']){
    //   case 'image/jpeg'://火狐
    //     break;
    //   case 'image/pjpeg':
    //     break;
    //   case 'image/gif':
    //     break;
    //   case 'image/png'://火狐
    //     break;
    //   case 'image/x-png'://IE
    //     break;
    //   default: echo "<script>alert('本站只允许 jpg,png,gif 图片');history.back();</script>";
    //   exit ;
    // }
      //第一个问题,如果上传错误,怎么办
      if($_FILES['userfile']['error']>0){
        switch ($_FILES['userfile']['error']){
          case 1:echo "<script>alert('上传文件超过约定值1');history.back();</script>";
          break;
          case 2:echo "<script>alert('上传文件超过约定值2');history.back();</script>";
          break;
          case 3:echo "<script>alert('部分被上传');history.back();</script>";
          break;
          case 4:echo "<script>alert('没有被上传');history.back();</script>";
          break;
        }
        exit;
      }
      if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
        //就在这里移动了
        //move_uploaded_file -- 将上传的文件移动到新位置
        //第一个参数,写上临时文件的地址,
        //第二个参数,第二个参数要写上你要存在的地址
        //先去判断这个目录是否存在
        //如果想屏蔽掉警告,直接加上 @
        if(!move_uploaded_file($_FILES['userfile']['tmp_name'],URL.'/'.$_FILES['userfile']['name'])){
          //如果移动失败,就失败
          echo '移动失败';
          exit;
        }
      }else{
        echo "<script>alert('临时文件夹找不到上传的文件');history.back();</script>";
        exit;
      }
      //全部通过就上传成功了
      //必须传一个值给Demo3.php
      //文件上传的地址
      echo "<script>alert('文件上传成功');location.href='Demo3.php?url=".$_FILES['userfile']['name']."';</script>";
    ?>

Demo3.php


    <?php
      $url = $_GET['url'];
      echo "<img src=\"uploads/".$url."\"/>";
    ?>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例