前言
首先说明,这个问法有点奇怪,我们不能单纯问 POST 对上传文件大小限制是多少的,因为在 HTTP 协议规范中是没有限制 POST 大小的,这个面试题应该主要是想问服务器如何限制上传文件大小以及平时开发上传文件功能时,文件过大为什么会出现上传失败。
这篇我们主要简单说明:为什么会存在 GET 和 POST 有长度限制这个说法。
GET 和 POST 都是没有长度限制的
GET 方法 和 POST 方法都属于 HTTP 中的请求方法,在 HTTP 协议规范中并没有限制它们的长度。即从语法层面来说,GET 和 POST 是没有长度限制的。
为什么说 GET 方法有长度限制?
首先我们知道 GET 方法请求就是将参数拼接到 URL 后面,当参数过多的时候,这里就会导致 URL 会比较长。但是浏览器会限制 URL 的长度,所以这里就会产生 GET 方法有长度限制的说法。
主要是浏览器对 URL 长度有限制,并不是说 GET 方法有长度限制。
为什么说 POST 对上传文件大小有限制?
同理,POST 也是没有大小限制的,这里主要是服务器控制的;
在 Tomcat 环境中,server.xml 文件有个 maxPostSize
字段来限制 POST 上传大小,默认貌似是 2M。
在 PHP 环境中,php.ini 文件有 upload_max_filesize
和 post_max_size
字段来控制,默认值跟版本有关 3M 或者 8M 或者其它吧。(PS:这里默认设置值去考究)
主要是服务器控制了 POST 上传大小,而且跟配置有关,并不是说 POST 方法本身有大小限制。
总结
通过上面,我们可以知道 GET 和 POST 是没有长度限制的,真正限制的是浏览器和服务器。
网友评论