1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP文件上传与下载

作者:用户 来源:互联网 时间:2017-12-01 18:16:54

PHP文件上传与下载 - 摘要: 本文讲的是PHP文件上传与下载, 这篇文章主要讲的是关于文件上传与下载的涉及到的一些知识,在这里总结一下,方便以后自己查阅。 一、文件上传 (1)php.ini配置文件 //之前有一个朋友找我一起翻译php.ini文件,当时不以为然,觉得这些配置不懂得时候就上网搜搜就行了

这篇文章主要讲的是关于文件上传与下载的涉及到的一些知识,在这里总结一下,方便以后自己查阅。

一、文件上传

(1)php.ini配置文件

//之前有一个朋友找我一起翻译php.ini文件,当时不以为然,觉得这些配置不懂得时候就上网搜搜就行了,但通过最近练手写模块开发的时候,发现有些东西如果你不知道,不去了解那么你就可能永远也接触不到那个点上。在php.ini中有很多辅助开发以及其他方面的相关配置,了解这些东西,个人觉得能使你对php有一种直观的理解,一种有点到线再到面的全局意识,基于此,在php的学习中,你会发现你需要什么,哪方面有什么不足。

 

进入正文,在php中实现小文件上传(2MB一下),是不需要在php.ini中修改相关配置的。如果想实现大文件上传,有以下的3部分内容需要进行配置:

a、Resource limits(译:资源限制)

参数

描述

max_execution_time

每个脚本页面完成执行操作的最大时间,单位是秒,设置为-1,则无限制

max_input_time

每个脚本页面处理请求数据的最大时间,单位是秒,也可以设置为-1

memory_limit

一个脚本页所能消耗的最大内存

//一般如果出现脚本页运行内存过大而导致的错误,不建议更改memory选项,这时候应该优先把页面的资源如大数组、相关对象释放掉或者设置为空。

bpost_max_size

该参数指PHP通过表单POST所能接收的最大值,包括表单中的所有项。

cFile Uploads

File Uploads块是专为文件上传设置。

参数

描述

file_uploads

是否允许HTTP上传,默认为On,即为开启,无需修改

upload_tmp_dir

文件上传时的临时存储目录,如果没指定就会用系统默认的临时文件夹

upload_max_filesize

允许上传文件的最大值

 

 

(2)上传表单的设置

//先来一段简单的上传代码

<form  method=”post” action=”” enctype=”multipart/form-data”>

<input tupe=”hidden” name=”MAX_FILE_SIZE” value=”1024000”>

<input name=”filename” type=”file” />

<input name=”submit” value=”submit”>

</form>

上面代码添加了一个hidden隐藏域,name值为MAX_FILE_SIZE,value是允许上传的最大字节数,当上传文件超过1MB时,$_FILES中的error值将返回2.该隐藏域的作用不是真正去限制上传文件的大小,它的作用在于避免用户误传了大文件而陷入了无尽的等待。

 

 

(3)预定义变量$_FILES(二维数组)

PHP中使用$_FILES可以获取上传文件的相关信息,当然,前提是你的php.ini和表单设置没有出错。

参数

描述

$_FILE[filename][‘name’]

上传文件的文件名

$_FILE[filename][‘size’]

文件大小

$_FILE[filename][‘tmp_name’]

文件上传时,首先在临时文件中被保存成一个临时文件,该变量为文件名

$_FILE[filename][‘type’]

上传文件的类型,注意不是后缀

$_FILE[filename][‘error’]

存储了文件的错误代码

0:上传成功;1:文件大小超出ini设置;2:文件大小超出表单设置

3:文件没有被全部上传;4:没有文件被上传;6:找不到临时文件

7:文件写入失败

 

(4)上传文件函数

bool  move_uploaded_file(string filename,string destination)

filename:上传文件的临时文件名,即$_FILES[‘tmp_name’]

destination:上传后保存的新的路径和名称

//php中,出于安全考虑,文件上传时首先被保留到指定的临时目录,move_uploaded_file()函数只是将文件换个地方保存。

(5)多文件上传

只是单文件上传的一种简单变换,form表单中,只需要将表单中的文件域使用数组命名即可:

<input name=”filename[]” type=”file” / >

<input name=”filename[]” type=”file” / >

.....

处理文件则通过循环遍历的方式获取文件的信息:

$_FILE[filename][‘name’][$i]

....

 

 

二、文件下载

(1)超链接:

将文件的相对路径或者绝对路径直接作为超链接即可。

(2)通过header()函数

header()函数属于HTTP函数,它的作用是发送一个原始的HTTP报头,在PHP程序中有很多功能,详情可以参考

http://www.blue1000.com/bkhtml/c19/2010-11/69601.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备