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


Posted in PHP onSeptember 11, 2016

本文实例讲述了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 相关文章推荐
JAVA/JSP学习系列之二
Oct 09 PHP
信用卡效验程序
Oct 09 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
MyEclipse常用配置图文教程
Sep 11 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
使用PHP编写发红包程序
Jul 22 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
php pdo连接数据库操作示例
Nov 18 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 #PHP
PHP入门教程之表单与验证实例详解
Sep 11 #PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 #PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 #PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 #PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 #PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 #PHP
You might like
php中iconv函数使用方法
2008/05/24 PHP
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
php实现上传图片文件代码
2015/07/19 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
javascript void(0)的妙用
2009/10/21 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
python常用函数与用法示例
2019/07/02 Python
python小白切忌乱用表达式
2020/05/29 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
护理专业自荐信
2013/12/03 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
团日活动总结范文
2014/04/25 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
护士2014年终工作总结
2014/11/11 职场文书
小学英语复习计划
2015/01/19 职场文书
应届毕业生自荐信
2015/03/04 职场文书
企业战略合作意向书
2015/05/08 职场文书
欠款证明
2015/06/24 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技