php 上传文件处理,PHP文件处理技术:文件上传基本设置

文件上传是日常应用中一个很重要的功能,图片上传、音频文件上传、视频文件上传等等。想要学习掌握php文件上传技术,可以分下面几个步骤:

1、学习如何控制上传文件,即配置php.ini文件。

2、学习对上次文件的判断,即判断上传文件的格式、大小。

3、学习之星文件上传操作的方法。

一、开启文件上传功能

想要能上传文件,首先开启PHP的文件上传功能,需要通过对php.ini文件进行设置,主要包括:是否支持上传、上传文件的临时目录、上传文件的大小、指令执行的实际、指令分配的内存空间。默认大部分功能都是开启的,只是具体的参数调节:比如上传文件的大小。

下面来说说在php.ini文件中常用的上传相关选项设置,将文件定位到File Uploads位置,如下图:

f8ec585ff3e9be441bc058f9dbad4dba.png

1、file_uploads:如果值是On,说明服务器支持文件上传;如果为Off则不支持。一般情况默认是支持的,这个不用修改。

2、upload_tmp_dir:上传文件临时目录,在文件被成功上传之前,文件首先存放到服务器端的临时目录中。多少使用系统默认的目录,也可以自行修改。上图中是注释掉的,想要设置的话,直接去掉前面的分号即可。

3、upload_max_filesize:服务器允许上传文件的最大值,以MB为单位,系统默认是2MB,上图就是默认设置的大小。这个值可以根据自己需要修改,设置成200MB或者2000MB都可以。

4、max_file_uploads:同一个请求可以最多上传多少个文件。在PHP程序中,常常会遇到这种问题,上传附件时明明成功上传了很多附件、如图片等,但实际上只能成功上传20个附件,或者直接报错无法上传,就是这个配置在起作用,默认值为20,超过这个数值就会出现问题。

上面是php.ini中File Uploads选项中与上传相关选项参数的设置说明,除了File Uploads中的设置选项会影响到上传外,在php.ini中还有其他几个选项会影响到文件的上传,如下:

5、max_execution_time:Maximum execution time of each script, in seconds,意思就是PHP一个指令所能执行的最大时间,以秒为单位。默认值为30:max_execution_time = 30。超过30秒后执行失败,这就是为什么我们在上传一个比较大的文件时,虽然文件大小满足要求了,但是还是上传失败的原因。

6、memory_limit:Maximum amount of memory a script may consume (128MB),php中一个指令所分配的内存空间,单位是MB,他的大小同样会影响到超大文件的上传。

如果修改了php.ini中配置的任一项都需要重新启动服务器环境,这样配置才会生效。现在大多数使用的是集成环境安装的PHP环境,上面说的那些配置大可不必担心,都是已经配置好的。

如何上传超过8M的大文件?

上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项。

php.ini配置文件中的默认文件上传大小为2M,php初学者容易犯的一个错误是在编写文件上传功能时通过设置上传文件最大大小的表单区域,即允许上传文件的最大值,max_file_size(隐藏值域)的值来规定上传文件的大小,其实一般别人可以绕过这个值,所以安全起见,最好是在php.ini配置文件中配置upload_max_filesize选项,设定文件上传的大小。

默认upload_max_filesize = 2M,即文件上传的大小为2M,如果你想上传超过8M的文件,比如20M,你必须设定upload_max_filesize = 20M。

但是光设置upload_max_filesize = 20M还是无法实现大文件的上传功能,你必须修改php.ini配置文件中的post_max_size选项,其代表允许POST的数据最大字节长度,默认为8M。如果POST数据超出限制,那么$_POST和$_FILES将会为空。要上传大文件,你必须设定该选项值大于upload_max_filesize指令的值,我一般设定upload_max_filesize和post_max_size值相等。另外如果启用了内存限制,那么该值应当小于memory_limit选项的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值