2

我正在尝试上传文件,使用的服务器端语言是 Perl。CGI 模块版本为 3.15

出于某种奇怪的原因,我可以上传任何低于 32KB 的文件,但超出该文件大小,我收到以下错误:

CGI.pm: Server closed socket during multipart read (client aborted?).

我尝试为 CGI 设置以下参数

use CGI ':standard';

$CGI::POST_MAX=-1;

$CGI::DISABLE_UPLOADS=0; # Allow file upload

但我仍然收到错误。

听说这个问题在较新版本的 CGI 中修复了,但是我无法升级 CGI 模块,是否有替代方案?

欢迎任何想法!

4

3 回答 3

0

我看到你正在设置$CGI::POST_MAX = 1,这是 1 个字节。

尝试增加它:1024 * 100.

文档

$CGI::POST_MAX

如果设置为非负整数,此变量会设置 POSTing 大小的上限,以字节为单位。如果 CGI.pm 检测到大于上限的 POST,它将立即退出并显示错误消息。此值将影响普通 POST 和多部分 POST,这意味着它也限制了文件上传的最大大小。您应该将其设置为相当高的值,例如 1 兆字节。

于 2017-09-21T11:39:55.723 回答
-1

您的问题的关键似乎在这里:

CGI.pm: Server closed socket during multipart read (client aborted?).

错误消息似乎表明您的服务器正在关闭连接。如果您使用的是 Apache、nginx 等,请检查它们的配置设置以增加最大发布请求正文大小。

于 2012-07-17T23:51:28.703 回答
-2

阅读 CGI.pm 的整个文档,即使它很长。某处有一个 sub 设置文件上传的安全最大值。这是为了让您的服务器更能抵抗 DDOS。只需设置您喜欢的值。这将解决问题的 32kB 部分......

(很抱歉,这个疯狂的猜测没有解决任何问题。考虑删除这个答案。)

于 2012-07-17T18:25:01.467 回答