PHP入门教程之上传文件实例详解

本文实例讲述了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数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • 解决RHAS3中Apache2的PHP上传文件大小的限制

    近日将论坛从VBB2升级到VBB3,将上传附件大小设置为2M,可每次上传超过500K的附件都会出错,而之前使用VBB2时却正常. 仔细检查php.ini,其中的upload_max_filesize=8m,没有任何问题,然后将其中的: max_execution_time = 30 max_input_time = 60memory_limit = 8M 数值分别调大到120.180.32M,还是没有任何作用,令人非常头痛! 然后开始怀疑是http.conf配置文件出现的问题,但从头到尾检查了一

  • nginx:413 Request Entity Too Large的处理办法--修改 PHP上传文件大小

    开发环境:CentOS + Nginx + PHP + MySql + phpMyAdmin 在用 phpMyAdmin 进行 sql 数据库导入的时候,经常需要上传比较大的 sql 数据文件,而这时会常碰见 nginx报错:413 Request Entity Too Large. 解决此问题,根据上传数据文件的大小,你需要调节两个地方的参数配置: 1.php 默认上传文件大小限制为 2M,如果超出 2M 你需要修改 php 配置文件 php.ini 里面的参数 post_max_size =

  • PHP用FTP类上传文件视频等的简单实现方法

    文件1:ftp.php <?php /** * 仿写CodeIgniter的FTP类 * FTP基本操作: * 1) 登陆; connect * 2) 当前目录文件列表; filelist * 3) 目录改变; chgdir * 4) 重命名/移动; rename * 5) 创建文件夹; mkdir * 6) 删除; delete_dir/delete_file * 7) 上传; upload * 8) 下载 download * * @author quanshuidingdang */ cl

  • PHP 上传文件大小限制

    配置php.ini文件 (以上传500M以下大小的文件为例) 查找以下选项并修改-> file_uploads = On ;打开文件上传选项 upload_max_filesize = 500M ;上传文件上限 如果要上传比较大的文件,仅仅以上两条还不够,必须把服务器缓存上限调大,把脚本最大执行时间变长 post_max_size = 500M ;post上限 max_execution_time = 1800 ; Maximum execution time of each script, i

  • php 修改上传文件大小限制实例详解

    1. 修改 max_execution_time 在php中,默认的页面最久执行时间为 30 秒,超过30秒,该脚本就停止执行. 这样就会出现无法打开网页的情况.这时我们可以修改 max_execution_time 在php.ini里查找 max_execution_time 默认是30秒.改为 max_execution_time = 0 0表示没有限制 2. 修改 post_max_size post_max_size 设定 POST 数据所允许的最大大小.此设定也影响到文件上传. php

  • php.ini修改php上传文件大小限制的方法详解

    打开php.ini,首先找到file_uploads = on ;是否允许通过HTTP上传文件的开关.默认为ON即是开upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹upload_max_filesize = 8m ;望文生意,即允许上传文件大小的最大值.默认为2Mpost_max_size = 8m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值.默认为8M一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,

  • PHP上传图片时判断上传文件是否为可用图片的方法

    本文实例讲述了PHP上传图片时判断上传文件是否为可用图片的方法.分享给大家供大家参考,具体如下: 这里利用getimagesize函数: function isImage($filename) { $types = '.gif|.jpeg|.png|.bmp'; //定义检查的图片类型 if(file_exists($filename)) { $info = getimagesize($filename); $ext = image_type_to_extension($info['2']);

  • php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)

    php使用ftp实现文件上传代码片段: <?php /** * ftp上传文件类 */ class Ftp { /** * 测试服务器 * * @var array */ private $testServer = array( 'host' => 'ip', 'port' => 21, 'user' => 'userName', 'pwd' => 'password' ); /** * 打开并登录服务器 * * @param string $flag 服务器标识test *

  • PHP入门教程之上传文件实例详解

    本文实例讲述了PHP上传文件的方法.分享给大家供大家参考,具体如下: Demo1.php <form enctype="multipart/form-data" action="Demo2.php" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> 上传文件: &

  • iOS开发中以application/json上传文件实例详解

    本文通过实例代码给大家讲解iOS中以application/json上传文件的形式,具体内容详情大家参考下本文. 在和sever后台交互的过程中.有时候.他们需要我们iOS开发者以"application/json"形式上传. NSString *accessUrl = [NSString stringWithFormat:@"%@/xxx",@"https://www.xxxxx.com:xxxx"]; NSMutableURLRequest

  • Java 文件上传的实例详解

    Java 文件上传的实例详解 java 文件上传 Java文件上传,介绍几种常用的方法,也是经过本人亲手调试过的 1.jspsmartupload 这个组件用起来是挺方便的,不过就是只适合小文件上传,如果大文件上传的话就不行,查看了一下他的代码,m_totalBytes = m_request.getContentLength(); m_binArray = new byte[m_totalBytes];居然把整个上传文件都读到内存去了,那如果是上传几十M的文件,同时几个用户上传,服务器稳挂,不

  • 最详细的文件上传下载实例详解(推荐)

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

  • Rust 入门之函数和注释实例详解

    目录 写在前面 函数 参数 语句和表达式 返回值 注释 写在前面 今天我们来学习 Rust 中的函数,最后会捎带介绍一下如何在 Rust 中写注释.也是比较轻量级的一节,大家快速过一下即可. 函数 函数本身是各个语言都支持的类型,我们此前已经多次使用 fn main() 这个函数来承载业务逻辑,fn 可以用来声明一个函数,而 main 函数跟其他语言一样,可以理解为程序启动的[起点],一切逻辑从这里开始. Rust 本身的命名规范是[snake case],即下划线 + 小写,这个其实各个语言都

  • Mybatis映射文件实例详解

     一.输入映射 parameterType 指定输入参数的Java类型,可以使用别名或者类的全限定名.它可以接收简单类型.POJO.HashMap. 1.传递简单类型 根据用户ID查询用户信息: <select id="findUserById" parameterType="int" resultType="com.itheima.mybatis.po.User"> SELECT * FROM USER WHERE id =#{id

  • Java 中HttpURLConnection附件上传的实例详解

    Java 中HttpURLConnection附件上传的实例详解 整合了一个自己写的采用Http做附件上传的工具,分享一下! 示例代码: /** * 以Http协议传输文件 * * @author mingxue.zhang@163.com * */ public class HttpPostUtil { private final static char[] MULTIPART_CHARS = "-_1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJK

  • python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以这次考虑通过python脚本来实现. 在此之前需要给python添加一个xlrd模块,这个模块是专门用来操作excel文件的. 在mac中可以通过easy_install xlrd命令实现自动安装模块 import xdrlib ,sys import xlrd def open_excel(fil

  • jsp按格式导出doc文件实例详解

    jsp按格式导出doc文件实例详解 原理:doc文件其实可以保存为xml文件,该xml文件用字符串表示了doc文件的表现形式,我们只需要用Java将那些要填的内容替换掉然后下载给客户就行了. 1.首先是按照你的文档填写好数据. 2.将文档另存为xml文件,然后编辑该xml文件,将填好的内容用某种格式替换,如:将名字张三替换成${name} 3.读取文件,将文件中的${name}替换成真正的名字. 4.下载. 接下来看代码: 首先是那个转换类 package com.my.util; import

  • Android 中读取Excel文件实例详解

    Android 中读取Excel文件实例详解 最近有个需求需要在app内置数据,新来的产品扔给了我两个Excel表格就不管了(两个表格格式还不统一...),于是通过度娘等方法找到了Android中读取Excel表格文件的一种方法,记录一下. 闲话一下Excel中工作簿和工作表的区别: 工作簿中包含有工作表.工作簿可以由一张或多张工作表组成,一个工作簿就是一个EXCEL表格文件. 好了,开始读取表格文件吧. 前提 首先,我们假设需要读取的表格文件名字为test.xls, 位于assets根目录下.

随机推荐