详细描述PHP处理web上传文件的流程,如何限制上传文件的大小不能超过某个数值?
1.流程:首先用户在浏览器端选择上传的文件,提交后,通过post方式上传到服务器由php引擎处理判断文件是否能够上传到php配置文件中指定的临时目录,之后获取文件后缀名判断文件是否是允许上传的文件格式,如果没问题,则按照随机数+时间的方式生成文件的名字+后缀。最后将文件从临时目录转移至Apache服务器目录。
2.在php配置文件中 有一个upload_max_filesize 设置其值就可以限制上传文件大小
可以在php.ini文件中的upload_max_filesize = 某值 设置上传文件大小,同时也可以在表单中$_FILES['name']['size']限制文件大小,以及服务器配置中也要设置上传文件的大小和上传时间。
3.同时如果是nginx服务器,也要设置其上传文件的大小限制, client_max_body_size 10m; 如果需要经过代理服务器,则代理服务器也同样需要设置上传大小配置;
在PHP中,当浏览器客户端提交过来的表单请求中包含上传的文件时,PHP会将上传的文件先暂时存放在临时目录中(在Windows操作系统中,默认的临时目录一般为C:/Windows/Temp),然后将上传文件的相关信息存放在超全局变量$_FILES
中。因此,我们只需要通过$_FILES
数组获取上传的文件信息,然后对其进行相应的处理操作即可。
1.file_uploads
设为On,允许通过HTTP上传文件
2.upload_tmp_dir
文件上传至服务器时用于临时存储的目录,如果没指定,系统会使用默认的临时文件夹(我的机器是/tmp)。
3.upload_max_filesize
允许上传文件大小的最大值,默认为2M。
4.post_max_size
php可接收的post数据的最大值(包括表单里的所有值的总合),默认为8M。
5.memory_limit
每个php所占的最大内存数,这个值要大于允许上传的文件大小。
6.max_execution_time
每个php运行的最长时间(秒),默认30秒。
7.max_input_time
php解析POST/GET数据的最长时间(秒),默认60秒。