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 相关文章推荐
综合图片计数器
Oct 09 PHP
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
php上传文件,创建递归目录的实例代码
Oct 18 PHP
php将session放入memcached的设置方法
Feb 14 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
php中的curl_multi系列函数使用例子
Jul 29 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
Oct 20 PHP
PHP面向对象之后期静态绑定功能介绍
May 18 PHP
php源码 fsockopen获取网页内容实例详解
Sep 24 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
May 28 PHP
yii2 url重写并隐藏index.php方法
Dec 10 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安全技术之 实现php基本安全
2010/09/04 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
python字典多条件排序方法实例
2014/06/30 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
学生信息管理系统python版
2018/10/17 Python
Django实现单用户登录的方法示例
2019/03/28 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
什么是唯一索引
2015/07/05 面试题
银行内勤岗位职责
2014/04/09 职场文书
考试诚信承诺书
2014/05/23 职场文书