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 相关文章推荐
PHP5/ZendEngine2的改进
Oct 09 PHP
MYSQL数据库初学者使用指南
Nov 16 PHP
php SQL防注入代码集合
Apr 25 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
php的sso单点登录实现方法
Jan 08 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 PHP
php简单统计中文个数的方法
Sep 30 PHP
php的4种常用运行方式详解
Dec 22 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
Yii redis集合的基本使用教程
Jun 14 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
memcache一致性hash的php实现方法
2015/03/05 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
python开启多个子进程并行运行的方法
2015/04/18 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
Python实现某论坛自动签到功能
2019/08/20 Python
Python restful框架接口开发实现
2020/04/13 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
Internet体系结构
2014/12/21 面试题
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
人事专员岗位职责
2015/02/03 职场文书
大学军训决心书
2015/02/05 职场文书
学校财务管理制度
2015/08/04 职场文书
2019新员工试用期转正申请书3篇
2019/08/13 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书