在PHP中通过POST方法实现文件上传功能

本文详细介绍PHP5中通过POST方法实现文件上传的过程,包括HTML表单的编写规范及关键参数解释,以及处理上传文件的PHP代码实现。重点强调了上传文件大小限制的设置与作用,同时介绍了$_FILES全局变量及其各个元素的含义与用途。

(本文内容属于转载,原文链接http://blog.sina.com.cn/s/blog_4fe447d501009rzh.html

在PHP 5中通过POST方法实现文件上传非常简单,可以上传文本文件,也可以上传二进制文件。(为避免博客文章编辑器自动转换HTML,下面的代码我用全角尖括号打出来的)

 

1. 文件上传使用的Form标签格式比较固定,示例如下:

<FORM ENCTYPE="multipart/form-data" ACTION="upload.php“  METHOD="post">

<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="14096">

<INPUT NAME="UploadedFile" TYPE="file"  size='15'>

<INPUT TYPE="submit" VALUE="上传文件">

</FORM> 

 

上面语句中需要引起注意的几项是:

  • ENCTYPE="multipart/form-data",这里是固定写法,否则文件上传失败
  • ACTION="upload.php“,定义要处理上传的程序文件路径
  • METHOD="post",定义传输方式为POST,一般情况下Form提交数据都设置为POST
  • <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="14096">,这是一个隐藏域,定义了上传文件的大小上限,超过这个值时,上传失败。它必须定义在文件上传域的前面.而且这里定义的值不能超过在php.ini 文件中upload_max_filesize设置的值,否则没有意义了.(注意:MAX_FILE_SIZE 的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该值。实际上,PHP.ini设置中的上传文件最大值,是不会失效的。但是最好还是在表单中加上 MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。)
  • <INPUT NAME="UploadedFile" TYPE="file"  size='15'>,这是文件上传域,Type属性必须设置为file,但Name属性可以自定义,这个值会在代码文件中使用.

2. 处理文件上传的PHP语句也非常简单,示例代码如下:

if (isset($_FILES["UploadedFile"]))

      

     $uploaddir="./";               

     $UploadSuccess =move_uploaded_file($_FILES['UploadedFile']['tmp_name'],$uploaddir.$_FILES['UploadedFile']['name']));

     If ($UploadSuccess)

     {

         echo "文件上传成功,详细信息为:<br>";

         print("上传文件: ".$_FILES['UploadedFile']['name']." <br>");

         print("本地文件: ".$_FILES['UploadedFile']['tmp_name']." <br>");

         print("大小: ".$_FILES['UploadedFile']['size']." <br>");

         print("类型: ".$_FILES['UploadedFile']['type']." <br>");

         print("<hr><br>");

       }

  }

 上面代码中关键的语句说明如下:

  • $uploaddir="./";  ,定义文件要上传到的服务器上的路径
  • $UploadSuccess =move_uploaded_file($_FILES['UploadedFile']['tmp_name'],$uploaddir.$_FILES['UploadedFile']['name']));  ,将文件上传至服务器指定的目录下。
  • move_uploaded_file 函数说明如下:

bool move_uploaded_file ( string filename, string destination)

本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 FALSE。如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。如果目标文件已经存在,将会被覆盖。

  • $_FILES  这是PHP预定义的HTTP 文件上传变量。通过 HTTP POST 方法传递的已上传文件项目组成的数组。是自动全局变量。

$_FILES 数组的内容如下所示。我们假设文件上传字段的名称如上例所示,为UploadedFile。名称可随意命名。  

$_FILES[' UploadedFile ']['name']

客户端机器文件的原名称。  

$_FILES[' UploadedFile ']['type']

文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。  

$_FILES[' UploadedFile ']['size']

已上传文件的大小,单位为字节。  

$_FILES[' UploadedFile ']['tmp_name']

文件被上传后在服务端储存的临时文件名。 

$_FILES[' UploadedFile ']['error']

 

如果文件上传失败,这里会存储错误代码,错误代码描述的意思如下:

UPLOAD_ERR_OK

值:0; 没有错误发生,文件上传成功。

UPLOAD_ERR_INI_SIZE

值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。

UPLOAD_ERR_FORM_SIZE

值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。

UPLOAD_ERR_PARTIAL

值:3; 文件只有部分被上传。

UPLOAD_ERR_NO_FILE

值:4; 没有文件被上传。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值