PHP上传文件代码实例

  • 更新时间:2020-05-19 10:44:04
  • 编辑:简梓菱

本文实例讲述了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封装单文件上传到数据库(路径) 的相关资料,需要的朋友可以参考下

    发布时间:2019-06-07

  • PHP中TP5上传文件的方法及实例代码

    这篇文章主要介绍了PHP中TP5 上传文件的实例详解的相关资料,这里实现PHP 的上传文件的实例,需要的朋友可以参考下

    发布时间:2019-06-08

  • php WebUploader实现图片批量上传实例方法

    这篇文章主要给大家介绍了利用php + WebUploader实现图片批量上传功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用PHP具有一定的参考学习价值,需要的朋友们下面来一起

    发布时间:2019-07-01

  • 解决PHP上传找不到临时文件夹的问题

    这篇文章主要介绍了PHP上传 找不到临时文件夹的解决方法,主要处理方式是找到php配置文件php.ini并做相应的修改,具体解决方法大家参考下本文

    发布时间:2019-06-06

  • PHP中move_uploaded_file上传中文文件名失败的解决方法

    这篇文章主要介绍了PHP 中move_uploaded_file 上传中文文件名失败的原因分析及解决方法 ,需要的朋友可以参考下

    发布时间:2019-07-31

  • PHP&MySQL跨设备网站开发实例精粹

    PHP&MySQL跨设备网站开发实例精粹

    这本书从易学实用的角度详细讲解了PHP、HTML5语法,MySQL数据库存取,网页之间的信息传递、表单的后端处理等,提供了丰富的网站开发范例,欢迎下载

    大小:80.9 MBPHP编程电子书

  • PHP项目开发全程实录(第4版)

    PHP项目开发全程实录(第4版)

    大小:70471 MB MPHP开发

  • PHP+MySQL程序设计及项目开发

    PHP+MySQL程序设计及项目开发

    大小:105.1MBPHP+MySQL

  • PHP 7 编程实战

    PHP 7 编程实战

    PHP7挟很多的、强劲的新作用和小工具强劲而成,应用这种作用和小工具能够 提升编码,编写出比老PHP版本号程序流程速度相当快的程序流程。这书主要详细介绍了PHP7有关的高级PHP编程技术。

    大小:11.2 MBPHP7电子书

  • Learning PHP设计模式

    Learning PHP设计模式

    本书是PHP设计模式的经典教程,让读者掌握更精巧的编程风格。本书利用大量浅显易懂的例子告诉你如何应用多种面向对象模式,并展示了这些模式在一些成熟的实际项目中的具体应用,欢迎免费下载

    大小:39.4 MBPHP编程电子书

  • PHP7.0+MySQL网站开发全程实例

    PHP7.0+MySQL网站开发全程实例

    《 PHP7.0MySQL网站开发全程实例 》在XAMPP集成化自然环境下,应用Dreamweaver对PHP动态网站开发。《PHP7.0MySQL网站开发全程实例》以全程实例课堂教学为设计方案总体目标,从网站开发自然环境的配

    大小:165.8 MB网站设计电子书

  • 深入PHP:面向对象、模式与实践(第3版)

    深入PHP:面向对象、模式与实践(第3版)

    《深入PHP:面向对象、模式与实践(第3版)》是PHP专家经典力作的新版本。书中主要介绍了如何使用面向对象技术和设计模式编写稳定的、可维护的代码,如何使用Subversion管理多个开发人员,

    大小:41.3 MBPHP编程电子书

  • php7.3.8官方手册文档

    php7.3.8官方手册文档

    PHP 7 是目前一代的 PHP,内部使用了 Zend 引擎 3 代, 除了很多新功能之外还提供了许多附加的 面向对象编程(OOP) 特性。php7.3.8版本-最新中文手册,chm格式-方便查找索引,需要的朋友可下载试试! 本手册很详细的介绍了PHP语言,以及怎么去用好这门语言,适合于初学者以及在编程过程中做辅助查询手册,PHP(PHP: Hypertext Preprocessor,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 WEB 开发。

    大小:31.5 MBphp学习

  • 跟兄弟连学PHP

    跟兄弟连学PHP

    本书是畅销书《细说PHP(第2版)》升级版,以实用为设计目标,包含PHP开发最主流的各项技术,对每一个知识点都进行了深入详细的讲解,并附有大量的实例代码,图文并茂,系统地介绍了PHP的相关技术及其在实际Web开发中的应用

    大小:302.8 MBPHP自学电子书

  • PHP开发实例大全:基础卷

    PHP开发实例大全:基础卷

    《PHP开发实例大全》625经典实例及源码分析 15个应用方向 两卷共1225例 40个方向 分门别类实例一应俱全 供学习、速查、实践练习的超全参考手册 php开发实战1200例 php范例大全之全新升级。

    大小:232 MBPHP开发电子书

用户留言