对不起,如果这是重复的,我想它会是,但找不到任何东西。

我有一个flex应用程序,我通过IE将数据发布回php/mysql服务器。我还没有遇到任何问题,但提前知道这一点可能会让我省去很多挫折和工作。通过http发布数据有大小限制吗?

这篇文章说不: http://www.netlobo.com/ie_form_submit.html

这个讨论的答案是肯定的: http://bytes.com/topic/php/answers/538226-what-maximum-limit-using-post-method

这些都是我在网上能找到的。所以请将答案限制在亲自测试/验证的数字。

我想要返回一个XML字符串,可以相当大(说高达5mb)。

如果它有任何区别:浏览器将永远是IE(我们的产品需要它),post来自和flex中的httpService, web服务器是php, DB是mySql。


当前回答

正如David所指出的,在大多数情况下我会选择KB。

php_value post_max_size 2K

注意:我的表单很简单,只有几个文本框,没有长文本。

(PHP中KB的简写是K,如下所述。)

其他回答

最好的解决方案之一是不使用多个或超过1,000个输入字段。您可以用任何特殊字符连接多个输入,如ex. @。

看到这个:

<input type='text' name='hs1' id='hs1'>
<input type='text' name='hs2' id='hs2'>
<input type='text' name='hs3' id='hs3'>
<input type='text' name='hs4' id='hs4'>
<input type='text' name='hs5' id='hs5'>

<input type='hidden' name='hd' id='hd'>

使用任何脚本(JavaScript或JScript),

document.getElementById("hd").value = document.getElementById("hs1").value+"@"+document.getElementById("hs2").value+"@"+document.getElementById("hs3").value+"@"+document.getElementById("hs4").value+"@"+document.getElementById("hs5").value

这样,就可以绕过max_input_vars问题。如果您在php.ini文件中增加max_input_vars,这对服务器是有害的,因为它使用了更多的服务器缓存内存,这有时会导致服务器崩溃。

这取决于服务器配置。如果你在Linux或类似环境下使用PHP,你可以使用.htaccess配置文件来控制它,如下所示:

#set max post size
php_value post_max_size 20M

是的,我个人可以证明这是有效的:)

如果您正在使用IIS,我不知道如何设置这个特定值。

由http服务器决定是否有限制。我从事的产品允许管理员配置限制。

此外,在PHP.INI文件中有一个设置:

max_input_vars

在我的PHP版本:5.4.16中,默认为1000。

摘自手册: 可以接受多少个输入变量(限制分别适用于$_GET, $_POST和$_COOKIE超全局)

裁判:http://www.php.net/manual/en/info.configuration.php ini.max-input-vars

你可以通过设置php.ini变量max_input_vars来发布大量的数据 这个变量的默认大小是1000,但如果你想发送大量的数据,你必须相应地增加大小。 如果你不能从ini_set设置大小,你必须通过htaccess或直接改变php.ini文件。

max_input_vars  2500
memory_limit    256M