在网站开发的过程中,为了确保能够充分利用服务器的空间,在开发上传功能时,必须对上传文件的大小进行控制。那么我们如何进行对上传文件的大小进行控制呢?
控制文件的大小可以从两个方面入手:
第一个是在PHP的配置文件php.ini中对上传文件进行控制,如果上传文件超过它指定的范围,那么执行上传就会识别。
第二个是在PHP配置文件允许的范围内,在程序中对上传文件的大小进行控制!
一:通过配置文件控制上传文件
PHP中通过php.ini文件对上传文件进行控制,包括是否支持上传,上传文件的临时文件目录,上传文件的大小,指令执行时间,指令分配的内存空间。
在php.ini中,定义 File Uploads项,完成对上传相关选项的设置。上传相关选项的含义如下:
file_uploads:如果值是 no,说明服务器支持上传文件,如果为off ,那么则不支持。一般默认是支持的,这个不用修改!
upload_tmp_dri:上传文件临时目录。文件被成功上传之前,文件首先存放到服务器端的临时目录中。多数使用系统默认目录,但是也可以自行设置!
upload_max_filesize:服务器允许上传文件的最大值,以MB为单位,系统默认为2MB,如果网站需要上传超过2MB的数据,那么就要修改这个值!
上述是php.ini中 File_Uploads项中与上述相关参数设置说明,除了File_Uploads项中的内容外,在php.ini中还有其他几个选项会影响到文件的上传~
max_execution_time:PHP中一个指令所能执行的最大时间,单位为秒。该选项在上传超大文件时必须要修改,否则即使上传文件在服务器允许的范围内,但是若超过了指令所能执行的最大时间,仍然无法实现上传~
memory_limit:PHP中一个指令所分配的内存空间,单位是 MB 。它的大小同样会影响得到超大文件的上传!
二:在程序中控制上传文件
在客户端控制上传文件应用的是 form 表单中的 enctype 和 method属性以及隐藏域 MAX_FILE_SIZE。
enctype = “multipart/form-data”:指定表单编码数据方式。
method = “post”:指定数据的传输方式。
<input type = "hidden" name="MAX_FILE_SIZE" value=“10000”/>:通过隐藏域控制上传文件的大小(单位为字节),该值不能超过php.ini配置文件中 upload_max_filesize 选项设置的值,它不能喝完全控制上传文件的大小。只是可以避免一些不必要的麻烦。
技巧:
在应用隐藏域<input type = "hidden" name="MAX_FILE_SIZE" value=“10000”/>控制文件上传大小时,必须将其放置在文件域之前,否则是不能发挥作用的!
修改一下php.ini文件。\x0d\x0a\x0d\x0a需要服务器权限才可修改!!\x0d\x0a\x0d\x0a需要在PHP.ini里设置以下几项:\x0d\x0a1. post_max_size =10M \x0d\x0a\x0d\x0a表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.\x0d\x0a限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等...\x0d\x0a\x0d\x0a2.file_uploads = On \x0d\x0a\x0d\x0a是否允许上传文件,如果为OFF您将不能上传文件.\x0d\x0a\x0d\x0a3.upload_tmp_dir = "D:/APM/PHP/uploadtemp/" \x0d\x0a\x0d\x0a上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.\x0d\x0a\x0d\x0a4.upload_max_filesize =2M \x0d\x0a\x0d\x0a最大上传文件大小,此项针对上传文件时单个文件的大小.\x0d\x0a\x0d\x0a与post_max_size之间的关系:\x0d\x0a在论坛发表贴子时,您post_max_size 设为10M,而此项设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.\x0d\x0a\x0d\x0a注意:很多人遇到修改php.ini后重应WEB服务后仍然不能生效.这种情况应该先确认一下所改的php.ini是不是当前PHP所使用的.\x0d\x0a您可以在WEB目录下建立一个php文件,内容很简单就一句话\x0d\x0a\x0d\x0a代码:\x0d\x0a\x0d\x0a浏览器中查看此文件, Configuration File (php.ini) Path 此项对应的就是您的PHP当前正在使用的php.ini文件了.1、php.ini:upload_max_filesize 所上传的文件的最大大小。默认值2M。2、php.ini:memory_limit 本指令设定了一个脚本所能够申请到的最大内存字节数,默认值8M。如果不需要任何内存上的限制,必须将其设为 -1。如果内存不够,则可能出现错误:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)
3、php.ini:post_max_size 设定POST数据所允许的最大大小。此设定也影响到文件上传。要上传大文件,该值必须大于 upload_max_filesize。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)