欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-28 17:44:16
本文实例讲述了php上传文件的方法。分享给大家供大家参考,具体如下: demo1.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程序设计有所帮助。