PHP文件上传的原理及实现
时间:2010-01-28
来源:互联网
php文件上传的原理及实现
利用php的文件函数来实现上传
这段[url=javascript:;]代码[/url]分为两个文件,一个为upload.html,一个是upload.php
[pre]<?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>[/pre]以上范例中 $_FILES 数组的内容如下所示。我们假设文件上传字段的名称为 userfile(名称可随意命名)
PHP上传文件涉及到的参数
PHP默认的上传限定是最大2M,想上传超过此设定的文件,需要调整PHP、[url=javascript:;]apache[/url]等的一些参数. 下面,我们简要介绍一下PHP文件上传涉及到的一些参数:
利用discuz实现PHP大文件上传应用举例
论坛的附件功能当初设计的初衷并不是为了文件管理,由于服务器配置,php,网络等多方面因素,使得通过论坛上传文件并不是一个好方案。
对于确实需要改善论坛附件上传条件的朋友可以尝试将上面提及的参数在php.ini进行设置,以适应大文件上传的需要。同时别忘记在论坛的后台相应做附件限制的地方进行设置。
论坛主要有2个地方可以对附件上传的大小进行限制,级别从高到低依次为:
打开php.ini,
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了
利用php的文件函数来实现上传
这段[url=javascript:;]代码[/url]分为两个文件,一个为upload.html,一个是upload.php
- upload.html
- 请注意<form enctype="multipart/form-data"......>这是一个标签,我们要实现文件的上传,必须指定为multipart/form-data,否则服务器将不知道要干什么。
- 值得注意的是文件upload.html中表单选项 MAX_FILE_SIZE 的隐藏值域,通过设置其Value(值)可以限制上载文件的大小。
- MAX_FILE_SIZE的值只是对浏览器的一个建议,实际上它可以被简单的绕过。因此不要把对浏览器的限制寄希望于该值。实际上,PHP设置中的上传文件最大值,是不会失效的。但是最好还是在表单中加上MAX_FILE_SIZE,因为它可以避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。
- upload.php
[pre]<?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>[/pre]以上范例中 $_FILES 数组的内容如下所示。我们假设文件上传字段的名称为 userfile(名称可随意命名)
- $_FILES['userfile']['name'] 客户端机器文件的原名称。
- $_FILES['userfile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
- $_FILES['userfile']['size'] 已上传文件的大小,单位为字节。
- $_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。
- $_FILES['userfile']['error'] 和该文件上传相关的错误代码
- 值:0; 没有错误发生,文件上传成功。
- 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
- 值:2; 上传文件的大小超过了 [url=javascript:;]HTML[/url] 表单中 MAX_FILE_SIZE 选项指定的值。
- 值:3; 文件只有部分被上传。
- 值:4; 没有文件被上传。
PHP上传文件涉及到的参数
PHP默认的上传限定是最大2M,想上传超过此设定的文件,需要调整PHP、[url=javascript:;]apache[/url]等的一些参数. 下面,我们简要介绍一下PHP文件上传涉及到的一些参数:
- file_uploads
- upload_tmp_dir
- upload_max_filesize
- post_max_size
- max_input_time
- memory_limit
- max_execution_time
- 对于[url=javascript:;]linux[/url]主机,可能在/etc/httpd/conf.d/access.conf/下面里面还有php.conf 文件,这个文件可能会解决一些系统的文件大小限制问题
利用discuz实现PHP大文件上传应用举例
论坛的附件功能当初设计的初衷并不是为了文件管理,由于服务器配置,php,网络等多方面因素,使得通过论坛上传文件并不是一个好方案。
对于确实需要改善论坛附件上传条件的朋友可以尝试将上面提及的参数在php.ini进行设置,以适应大文件上传的需要。同时别忘记在论坛的后台相应做附件限制的地方进行设置。
论坛主要有2个地方可以对附件上传的大小进行限制,级别从高到低依次为:
- 帖子相关---附件类型尺寸
- 用户组---附件相关
打开php.ini,
参数 | 设置 | 说明 |
file_uploads | on | 是否允许通过HTTP上传文件的开关。默认为ON即是开 |
upload_tmp_dir | -- | 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹 |
upload_max_filesize | 8m | 望文生意,即允许上传文件大小的最大值。默认为2M |
post_max_size | 8m | 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M |
说明 | ||
一般地,设置好上述四个参数后,在网络正常的情况下,上传<=8M的文件是不成问题 | ||
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。 | ||
max_execution_time | 600 | 每个PHP页面运行的最大时间值(秒),默认30秒 |
max_input_time | 600 | 每个PHP页面接收数据所需的最大时间,默认60秒 |
memory_limit | 8m | 每个PHP页面所吃掉的最大内存,默认8M |
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了
[ 此帖被php华南培训在2010-01-28 13:55重新编辑 ]
作者: php华南培训 发布时间: 2010-01-28
好东西。。。。。。。。
作者: dongdong1237 发布时间: 2010-01-28
顶下。。。
作者: xiaohufei 发布时间: 2010-01-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28