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和ACCESS写聊天室(二)
Oct 09 PHP
php strcmp使用说明
Apr 22 PHP
利用php+mysql来做一个功能强大的在线计算器
Oct 12 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
php检测url是否存在的方法
Apr 14 PHP
PHP实现原比例生成缩略图的方法
Feb 03 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
PHP自定义函数格式化json数据示例
Sep 14 PHP
Yii框架中使用PHPExcel的方法分析
Jul 25 PHP
php实现映射操作实例详解
Oct 02 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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下使用以下代码连接并测试
2008/04/09 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
Js动态创建div
2008/09/25 Javascript
ToolTips JQEURY插件之简洁小提示框效果
2011/11/19 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
微信小程序录音与播放录音功能
2017/12/25 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
Python3.x和Python2.x的区别介绍
2013/02/12 Python
Python函数的周期性执行实现方法
2016/08/13 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
pandas ix &amp;iloc &amp;loc的区别
2019/01/10 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
python logging日志模块原理及操作解析
2019/10/12 Python
Python实现自动访问网页的例子
2020/02/21 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
学校消防演习方案
2014/02/19 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js