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 相关文章推荐
phpmyadmin的#1251问题
Nov 25 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
php中实现xml与mysql数据相互转换的方法
Dec 25 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
thinkphp5.1框架模板布局与模板继承用法分析
Jul 19 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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自带的进位制之间的转换函数
2013/06/08 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
学习并汇集javascript匿名函数
2010/11/25 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
vue组件实例解析
2017/01/10 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
python写入并获取剪切板内容的实例
2018/05/31 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
Python3列表List入门知识附实例
2020/02/09 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
应届毕业生求职信
2013/11/30 职场文书
业务主管岗位职责范本
2013/12/25 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL