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 相关文章推荐
PHP MSSQL 存储过程的方法
Dec 24 PHP
php实现网站插件机制的方法
Nov 10 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 PHP
CI框架学习笔记(二) -入口文件index.php
Oct 27 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
php生成Android客户端扫描可登录的二维码
May 13 PHP
php版交通银行网银支付接口开发入门教程
Sep 26 PHP
php编程实现简单的网页版计算器功能示例
Apr 26 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
在PHP中实现使用Guzzle执行POST和GET请求
Oct 15 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/02/18 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
Python实现的排列组合计算操作示例
2017/10/13 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
Python基于WordCloud制作词云图
2019/11/29 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
网络安全方面的面试题
2016/01/07 面试题
社区志愿者心得体会
2014/01/03 职场文书
廉洁自律承诺书
2014/03/27 职场文书
志愿者宣传口号
2014/06/17 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
简爱电影观后感
2015/06/10 职场文书
病假证明模板
2015/06/19 职场文书
教学副校长工作总结
2015/08/13 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android