PHP实现文件上传和多文件上传_第1页
PHP实现文件上传和多文件上传_第2页
PHP实现文件上传和多文件上传_第3页
PHP实现文件上传和多文件上传_第4页
PHP实现文件上传和多文件上传_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——PHP实现文件上传和多文件上传PHP实现文件上传和多文件上传

PHP实现文件上传和多文件上传的相关资料,还为大家共享了解决如何修改PHP上传文件的大小限制问题的方法,需要的挚友可以参考下。

在PHP程序开发中,文件上传是一个使用分外普遍的功能,也是PHP程序员的必备技能之一。值得欣喜的是,在PHP中实现文件上传功能要比在Java、C#等语言中简朴得多。下面我们结合概括的代码实例来细致介绍如何通过PHP实现文件上传和多文件上传功能。

要使用PHP实现文件上传功能,我们先来编写两个php文件:index.php和upload.php。其中,index.php页面用于提交文件上传的表单苦求,upload.php页面用于接收上传的文件并举行相应处理。

首先,我们来编写一个简朴的index.php文件,由于其中涉及的主要是html代码,对比简朴,因此不再赘述,index.php页面的细致代码如下:

?php

//设置编码为UTF-8,以制止中文乱码

headerContent-Type:text/html;charset=utf-8;

?

!DOCTYPEhtml

html

head

title文件上传表单页面/title

/head

body

formaction=upload.phpmethod=postenctype=multipart/form-data

文件1:inputname=upload_file1type=file/br/

文件2:inputname=upload_file2type=file/br/

inputtype=submitvalue=上传/

/form

/body

/html

值得留神的是,由于在HTTP协议设计之初,它并不支持文件上传功能,form表单的encrypt属性的默认值为application/x--form-urlencoded,它只能用于提交一般的表单苦求。假设提交的表单中包含需要上传的文件,我们需要将enctype的属性值改为multipart/form-data才能实现文件上传功能。此外,method的属性值务必为post。

接着,我们持续编写upload.php文件的代码。

?php

//设置编码为UTF-8,以制止中文乱码

headerContent-Type:text/html;charset=utf-8;

$first_file=$_FILES[upload_file1];//获取文件1的信息

$second_file=$_FILES[upload_file2];//获取文件2的信息$upload_dir=D:/upload/;//保存上传文件的目次//处理上传的文件1

if$first_file[error]==UPLOAD_ERR_OK

//上传文件1在服务器上的临时存放路径

$temp_name=$first_file[tmp_name];

//上传文件1在客户端计算机上的真实名称

$file_name=$first_file[name];

//移动临时文件夹中的文件1到存放上传文件的目次,并重命名为真实名称

move_uploaded_file$temp_name,$upload_dir.$file_name;

echo[文件1]上传告成!br/;

else

echo[文件1]上传失败!br/;

//处理上传的文件2

if$second_file[error]==UPLOAD_ERR_OK

//上传文件2在服务器上的临时存放路径

$temp_name=$second_file[tmp_name];

//上传文件2在客户端计算机上的真实名称

$file_name=$second_file[name];

//移动临时文件夹中的文件2到存放上传文件的目次,并重命名为真实名称

move_uploaded_file$temp_name,$upload_dir.$file_name;

echo[文件2]上传告成!br/;

else

echo[文件2]上传失败!br/;

?

在PHP中,当欣赏器客户端提交过来的表单苦求中包含上传的文件时,PHP会将上传的`文件先暂时存放在临时目次中在Windows操作系统中,默认的临时目次一般为C:/Windows/Temp,然后将上传文件的相关信息存放在超全局变量$_FILES中。因此,我们只需要通过$_FILES数组获取上传的文件信息,然后对其举行相应的处理操作即可。下面,我们来看看通过欣赏器上传A.gif和B.gif两个图片文件时,使用print_r函数输出超全局变量$_FILES的细致信息:

Array[upload_file1]=Array

PHP实现文件上传和多文件上传

[name]=A.gif客户端上传时的真实文件名称

[type]=image/gif文件的类型

[tmp_name]=C:\Windows\Temp\php9803.tmp文件上传到PHP服务器后临时存放的路径

[error]=0错误信息,0表示没有错误

[size]=87123文件大小,单位为字节

[upload_file2]=Array

[name]=B.gif

[type]=image/gif

[tmp_name]=C:\Windows\Temp\php9813.tmp

[error]=0

[size]=93111

在上面的例子中,我们上传的两个文件参数名分别为upload_file1和upload_file2。现在,我们让表单中的多个文件以一致的参数名upload_file,将方才上传的两个文件以参数数组形式再次提交上传。此时,我们需要将index.php页面中的两个file文件域修改为如下html代码:

文件1:inputname=upload_file[]type=file/br/

文件2:inputname=upload_file[]type=file/br/

此外,我们还需要对upload.php页面举行相应的修改:

?php

//设置编码为UTF-8,以制止中文乱码

headerContent-Type:text/html;charset=utf-8;

$fileArray=$_FILES[upload_file];//获取多个文件的信息,留神:这里的键名不包含[]

$upload_dir=D:/upload/;//保存上传文件的目次

foreach$fileArray[error]as$key=$error

if$error==UPLOAD_ERR_OK//PHP常量UPLOAD_ERR_OK=0,表示上传没有出错

$temp_name=$fileArray[tmp_name][$key];

$file_name=$fileArray[name][$key];

move_uploaded_file$temp_name,$upload_dir.$file_name;

echo上传[文件.$key.]告成!br/;

else

echo上传[文件.$key.]失败!br/;

?

同样的,我们使用print_r函数来查看上面例子中的超全局变量$_FILES的细致信息:

Array

[upload_file]=Array

[name]=Array

[0]=A.gif

[1]=B.gif

[type]=Array

[0]=image/gif

[1]=image/gif

[tmp_name]=Array

[0]=C:\Windows\Temp\php87B9.tmp

[1]=C:\Windows\Temp\php87BA.tmp

[error]=Array

[0]=0

[1]=0

[size]=Array

[0]=87123

[1]=93111

备注1:在PHP的默认配置下,上传的文件大小超出确定的范围将会出错,请参文末提到的如何修改PHP上传文件的大小限制问题的解决方法。

备注2:上述处理文件上传的PHP代码只是一个简朴的入门例如,并不能直接作为正式代码使用,由于还有大量需要额外留神的安好因素没有考虑,例如:文件的类型、文件的大小以及上传文件的名称重复等。

备注3:假设上传的文件名称中包含中文,可能引起文件名称乱码问题。此时,需要使用函数iconv来转换文件名称的编码。

前面我们了解了如何使用PHP实现文件上传和多文件上传。不过,在PHP的默认配置处境下,当上传的文件大小超出确定的限制时,我们将得到如下的错误提示信息:

Warning:POSTContent-Lengthof625523488bytesexceedsthelimitof8388608bytesinUnknownonline0

上述错误信息的大致意思是,我们使用POST苦求提交的数据大小超过了服务器的最大限制数8388608字节=8MB。

展现上述错误的理由是,在PHP的配置文件php.ini中,默认存在如下配置信息在php.ini中,行首的分号;表示当前行是解释,不会生效:

;脚本解析输入数据类似POST和GET允许的最大时间,单位是秒。它从接收全体数据到开头执行脚本举行测量的。

max_input_time=60

;允许客户端单个POST苦求发送的最大数据

post_max_size=8M

;是否开启文件上传功能

file_uploads=On

;文件上传的临时存放目次假设不指定,使用系统默认的临时目次

;upload_tmp_dir=

;允许单个苦求上传的最大文件大小

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论