【发布时间】:2023-03-20 08:10:01
【问题描述】:
我们使用 CGI.pm 来帮助我们处理在我们的网站上以及通过我们的 Android 和 iPhone 应用程序使用的 API 上传的文件。我们最近注意到,对于通过我们的 iPhone 应用程序上传的近 50% 的文件,CGI.pm 似乎没有返回任何参数。我们没有发现通过我们的网站上传的这些文件存在类似问题。
我们无法在测试中复制该问题,但在生产中 CGI.pm 的 cgi_error() 方法在缺少 CGI.pm 参数的情况下不会报告任何错误。我们已确认 iPhone 应用在 POST 上传文件时始终包含正确的参数。
设置的快速背景。我们在 Amazon EC2 服务器上部署了应用程序,这些服务器正在使用 Amazon Elastic Load Balancer 进行负载均衡。我们还有 $CGI::POST_MAX=(1024*100000);因此 POST 最大大小设置为 100MB,我们已确认所有上传都在此限制之下。
我不确定下一步该去哪里。任何关于问题可能是什么以及如何解决它的想法将不胜感激。有关如何确定问题根源的任何想法也很有帮助,以便我们开始进行故障排除。
提前感谢您的帮助!
【问题讨论】:
-
当您说 CGI.pm 对 50% 的上传文件没有返回任何参数时,您能澄清一下您的意思吗?除了文件数据之外的参数是否丢失,或者 CGI.pm 没有任何可用的数据?错误日志是否显示这些请求有任何错误?
-
CGI.pm 绝对没有返回任何参数,即使我们已验证所有参数都已由 iPhone 应用程序正确提交。错误日志没有报告任何内容,cgi_error() 方法也没有报告,这就是我们如此卡住的原因。
-
多部分 MIME 编码之前还是之后的 100MB?
-
不知道,但从 iPhone 上传的照片都小于 10MB,所以这并不重要。
标签: perl post file-upload cgi