`
sq1228
  • 浏览: 81906 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

php文件上传

    博客分类:
  • PHP
阅读更多

本例将介绍如何用PHP 4.0 
把客户端任何类型的文件上传到服务器端。文件上传是网站应用中一个极为常见的应用问题,也是目前网站的一个基本功能。比如企业上传产品图片(BMP、JPG、GIF类型的文件)、个人上传简历(Word类型文件)或者将其他类型的文件上传到服务器。
PHP 能够接受任何来自符合 RFC-1867 标准的浏览器(包括 Netscape Navigator 3 及更高版本,Microsoft 

Internet 
Explorer 3 加微软补丁,或者更高版本)上传的文件。PHP 的这种特性使得我们既可以上传文本文件,也可以上传二进制文件。利用 PHP的认证和文件操作函数,您就可以控制谁有上传的权限,以及在文件上传后进行哪些处理。
编程思路
本实例中文件上传主要是利用form表单提交一个File对象给服务器。其中 File 对象必须包含 Multipart/form-data的 enctype 
属性.MAX_FILE_SIZE 是一个隐含的表单变量,用来限制上传文件的最大字节数。同时考虑到大文件上传容易造成超时的情况,所以可以用 
set_time_limit($TimeLimit) 来加大超时限制时间。
表单提交后,PHP 将检测上载的文件。文件存放在服务器上的一个临时目录中.同时生成—个与文件域同名的几个变量,如 _name代表文件名称,_size代表文件大小的字节数,_type代表文件MIME类型。由于临时目录下的文件近期会被删除,所以必须利用函数move_uploaded_file将文件拷贝到指定的路径或重新命名。

创作步骤
一、创建客户端文件上传的表单
<form enctype="multipart/form-data" action="" method="post"> 
请选择文件: <br>
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
<input name="upload_file" type="file"><br>
<input type="submit" value="上传文件"> 
</form> 
MAX_FILE_SIZE 隐藏域(单位为字节)必须先于文件输入域,其值为接收文件的最大尺寸。同时,要保证您的文件上

传表单中要有 
enctype="multipart/form-data",否则文件上传将不能工作。 
警告 :
MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该

值。实际上,PHP 
设置中的上传文件最大值,是不会失效的。但是最好还是在表单中加上 
MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。 
二、通过$_FILES 数组获取相关的变量
这些数组将包含所有关于您上传的文件的信息,
我们假设文件上传字段的名称为 userfile。名称可随意命名。 
$_FILES['userfile']['name']

客户端机器文件的原名称。 
$_FILES['userfile']['type']

文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。 
$_FILES['userfile']['size']

已上传文件的大小,单位为字节。 
$_FILES['userfile']['tmp_name']

文件被上传后在服务端储存的临时文件名。 
$_FILES['userfile']['error']

和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。 
接受上传文件的 PHP 脚本必须在文件上传后进行判断,来决定接下来要对该文件进行那些操作。例如,您可以通过 
$_FILES['userfile']['size'] 变量来忽略尺寸太大或太小的文件,也可以通过 $_FILES['userfile']['type'] 
变量来过滤文件类型和某种标准不相符合的文件。在 PHP 4.2.0 以上版本,您还可以通过 $_FILES['userfile']

['error'] 
变量来根据不同的错误代码来做相关的判断。不管做何种的判断,您必须将该文件从临时目录中删除,要么将其移动

到其它的地方。 
如果表单中没有选择上传的文件,则 PHP 变量 $_FILES['userfile']['size'] 的值将为 
0,$_FILES['userfile']['tmp_name'] 将为 none。 
如果该文件没有被移动到其它地方也没有被改名,则该文件将在表单请求结束时被删除。 

文件被上传后,默认地会被储存到服务端的默认临时目录中,除非您将 php.ini 中的 upload_tmp_dir 
设置为了其它的路径。服务端的默认临时目录可以通过更改 PHP 运行环境的环境变量 TMPDIR 来重新设置,但是在 

PHP 脚本内部通过运行 putenv() 
函数来设置是不起作用的。该环境变量也可以用来确认其它的操作也是在上传的文件上进行的。 
三、本例程序代码
<html><head>
<title>上载文件表单</title></head> 
<body> 
<form enctype="multipart/form-data" action="" method="post"> 
请选择文件: <br>
<input name="upload_file" type="file"><br>
<input type="submit" value="上传文件"> 
</form> 
</body>
</html> 
   <?
   $upload_file=$_FILES['upload_file']['tmp_name'];
   $upload_file_name=$_FILES['upload_file']['name'];
   $upload_file_size=$_FILES['upload_file']['size'];
   if($upload_file){ 
   $file_size_max = 1000*1000;// 1M限制文件上传最大容量(bytes)
   $store_dir = "d:/fileupload/";// 上传文件的储存位置
   $accept_overwrite = 1;//是否允许覆盖相同文件
   // 检查文件大小
   if ($upload_file_size > $file_size_max) { 
   echo "对不起,你的文件容量大于规定";
   exit;
   }
   // 检查读写文件
   if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) { 
   echo   "存在相同文件名的文件";
   exit;
   }
   //复制文件到指定目录
   if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) { 
   echo "复制文件失败";
   exit;
   }
    }
     Echo   "<p>你上传了文件:";
     echo  $_FILES['upload_file']['name'];
     echo "<br>";
     //客户端机器文件的原名称。 
     Echo   "文件的 MIME 类型为:";
     echo $_FILES['upload_file']['type'];
     //文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。 
     echo "<br>";
     Echo   "上传文件大小:";
     echo $_FILES['upload_file']['size'];
     //已上传文件的大小,单位为字节。 
     echo "<br>";
     Echo   "文件上传后被临时储存为:";
     echo $_FILES['upload_file']['tmp_name'];
     //文件被上传后在服务端储存的临时文件名。 
     echo "<br>";

$Error=$_FILES['upload_file']['error'];
switch($Error){ 
        case 0:
            Echo   "上传成功"; break;
        case 1:
            Echo   "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."; break;
        case 2:
            Echo   "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";    break;
        case 3:
            Echo   "文件只有部分被上传";break;
        case 4:
            Echo   "没有文件被上传";break;
}

分享到:
评论

相关推荐

    PHP文件上传类

    在PHP编程中,文件上传是常见的功能之一,用于让用户上传图片、文档等文件到服务器。为了简化这个过程,开发者通常会编写一个专门的文件上传类,以实现对上传过程的全面控制和错误处理。以下是对"PHP文件上传类"的...

    php文件上传插件(简洁好用的上传插件)

    首先,你需要将压缩包中的PHP文件解压到你的项目目录中。然后,在需要实现文件上传功能的PHP脚本中引入该插件,通过调用其提供的函数来完成文件的接收、验证和保存。例如: ```php require_once 'path/to/upload....

    uploaddify+php文件上传,可传多文件以及带进度条

    标题中的"uploaddify+php文件上传"指的是一个基于Uploaddify插件和PHP技术实现的文件上传系统。Uploaddify是一款JavaScript库,主要用于处理文件上传操作,尤其适用于那些希望在用户端显示上传进度条的Web应用。这个...

    一个php文件上传处理类库

    在PHP编程中,文件上传是常见的功能之一,用于让用户上传图片、文档等文件到服务器。这个"一个php文件上传处理类库"显然提供了一个方便、高效的方式来管理这种操作。类库通常封装了复杂的细节,使得开发者可以更简单...

    php文件上传进度条

    这正是“php文件上传进度条”这一主题的核心所在。本文将深入探讨如何使用PHP结合AJAX技术实现一个动态的文件上传进度条。 ### PHP文件上传进度条的关键概念 #### 1. UploadProgressMeter类 `UploadProgressMeter`...

    php文件上传,自己写的文件上传类,附带一个demo,欢迎大牛们提出意见和建议

    在PHP开发中,文件上传是一项常见的任务,用于接收用户通过Web表单提交的文件。这里提供的资源是一个自定义的PHP文件上传类,该类允许开发者更灵活地控制上传过程中的各种参数,比如文件数量、大小、存储目录以及...

    php文件上传系统

    本项目名为“php文件上传系统”,显然是一个利用PHP实现的文件上传功能模块,结合MySQL数据库进行数据管理。 在PHP中,文件上传主要依赖于HTTP协议的multipart/form-data编码类型。用户在HTML表单中使用`...

    php文件上传模块,实现文件的上传

    在PHP中,文件上传是网站常见的一种功能,用于让用户上传图片、文档等文件到服务器。本文将详细讲解如何使用PHP实现文件上传模块,以及在这个过程中需要注意的关键知识点。 首先,我们需要理解HTTP协议中的文件上传...

    php文件上传进度条集合

    以下是一些关于PHP文件上传进度条的知识点: 1. **AJAX异步上传**:传统的文件上传通常会刷新整个页面,而通过AJAX技术,可以实现在后台进行文件上传,前端页面保持不刷新,从而实现进度条展示。在PHP中,通常会...

    PHP文件上传标准代码

    在PHP中,文件上传是网站应用中常见的功能之一,它允许用户通过网页上传文件到服务器。下面我们将详细探讨PHP文件上传的标准代码实现及其工作原理。 首先,PHP文件上传需要使用`&lt;form&gt;`标签来创建一个表单,其中`...

    比较全面的php文件上传类.zip

    这个"比较全面的php文件上传类"是一个专门处理文件上传的工具,它封装了相关操作,提供了更方便、安全的方式来处理文件上传过程。下面将详细讲解这个类库的核心知识点及其在实际开发中的应用。 首先,类库的设计...

    php文件上传源码

    在PHP中进行文件上传是一项常见的任务,特别是在构建网站或Web应用程序时。PHP文件上传源码主要涉及以下几个关键知识点: 1. **表单设计**:在HTML中,我们需要一个`&lt;form&gt;`元素来允许用户选择要上传的文件。关键...

    PHP文件上传与下载学习笔记

    在PHP中,文件上传和下载是常见的Web应用功能,用于处理用户上传的文件或提供文件供用户下载。本文将深入探讨PHP文件上传的配置、PHP如何获取上传文件信息以及配置文件的相关设置。 ### 1. 文件上传配置 PHP的文件...

    php文件上传代码

    在PHP中,文件上传是网站常见的一种功能,用于让用户上传图片、文档或其他类型的文件到服务器。这个主题涵盖了许多重要的知识点,包括PHP语法、表单处理、文件操作、错误处理以及安全考虑。以下是对这些关键点的详细...

    php文件上传类

    在PHP中,文件上传是网站开发中常见的功能之一,它允许用户从本地计算机选择文件并将其传输到服务器。为了实现这一功能,PHP提供了一个内置的`$_FILES`全局数组,用于处理HTTP表单中的文件上传数据。然而,在实际...

    强大的php文件上传类强大的php文件上传类

    在PHP编程中,文件上传是常见的功能之一,用于允许用户从他们的设备向服务器上传文件。一个强大的PHP文件上传类能够简化这一过程,处理各种安全问题,并提供灵活性来满足不同的项目需求。下面我们将深入探讨PHP文件...

    php文件上传类--非常实用

    php文件上传类,很简单的实例,是初学php的很好的参考资料

    PHP文件上传类,PHP文件上传类

    在PHP开发中,文件上传是一项常见的任务,尤其在构建网页应用程序时,如用户头像上传、文件分享等场景。PHP提供了内置的文件上传处理机制,但为了方便开发者使用,通常会封装成一个类,简化上传过程。这个"PHP文件...

    php文件上传类(整理)

    本文将深入探讨如何创建一个简单的PHP文件上传类,并了解文件上传过程中的一些关键点。 首先,文件上传表单是用户选择并提交文件的关键组件。在提供的代码中,可以看到一个基本的HTML表单,它使用`POST`方法提交...

    php文件上传代码以及封装的上传类

    php文件上传代码以及封装的上传类,&lt;?php //接收 $username=$_POST['username']; $fileintro=$_POST['fileintro']; //echo $username.$fileintro; //获取文件信息 /* echo "&lt;pre&gt;"; print_r($_FILES); ...

Global site tag (gtag.js) - Google Analytics