【发布时间】:2010-09-07 23:09:42
【问题描述】:
我正在使用 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 将字符附加到文件末尾,它总是截断文件中的行数。我想我可以通过遍历服务器端的每个字符来弄清楚添加了什么,但不值得。为应用引擎设置的谷歌群组甚至没有回答这个问题!
【问题讨论】:
标签: perl google-app-engine https