我正在使用 perl 脚本发布到 Google Appengine 应用程序。我使用 -F 选项发布了一个包含一些 XML 的文本文件。
http://www.cpan.org/authors/id/E/EL/ELIJAH/bget-1.1
有一个 1.2 版,已经过测试并得到同样的问题。帖子看起来像这样。
Host: foo.appspot.com
User-Agent: lwp-request/1.38
Content-Type: text/plain
Content-Length: 202
<XML>
<BLAH>Hello World</BLAH>
</XML>
我已经修改了示例,所以 202 不正确,不用担心。关于问题。Content-Length 与文件上的字节数匹配,但是除非我手动增加 Content-Length 它不会发送所有文件,否则会截断一些字节。对于不同大小的文件,截断的字节数是不一样的。我在脚本上使用了 -r 选项,我可以看到它正在发送什么并且它正在发送所有文件,但 Google Appengine self.request.body 显示并非所有内容都已收到。我认为解决方案是为 Content-Length 获得正确的数字,显然它不像文件上的字节数那么简单,或者 perl 脚本以某种方式对其进行了修改。
更新:感谢 Erickson 的正确答案。我使用 printf 将字符附加到文件末尾,它总是截断文件中的行数。我想我可以通过遍历服务器端的每个字符来弄清楚添加了什么,但不值得。这甚至没有在为应用引擎设置的谷歌组上得到回答!