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 相关文章推荐
模拟OICQ的实现思路和核心程序(三)
Oct 09 PHP
PHP EOT定界符的使用详解
Sep 30 PHP
php join函数应用
May 04 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
Apr 08 PHP
php动态添加url查询参数的方法
Apr 14 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
PHP中header用法小结
May 23 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
Jun 14 PHP
PHP实现一个限制实例化次数的类示例
Sep 16 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 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代码
2012/09/14 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
2018/11/02 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
财务管理职业生涯规划范文
2013/12/27 职场文书
集团公司人力资源部岗位职责
2014/01/03 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
学生保证书
2015/01/16 职场文书
校园运动会广播稿
2015/08/19 职场文书
九年级英语教学反思
2016/02/15 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python
Python实现双向链表
2022/05/25 Python
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python