【问题标题】:Getting 500 on blobstore upload in production, dev server works fine在生产中获得 500 的 blobstore 上传,开发服务器工作正常
【发布时间】:2010-11-04 13:11:10
【问题描述】:

我试图在 GAE 小组上问这个问题,但一无所获,而且我在这个问题上没有任何进展......

我有一个已安装的应用程序通过 blobstore 服务向我的 GAEj 应用程序提交文件。这一切在开发服务器上工作正常,但在生产中,blobstore 接受上传,然后使用提供给 blobstoreService.createUploadUrl() 的 URL 调用我的应用程序,正确传递我的客户端提供的所有参数以及上传的文件到此 URL,但为 blobstoreService.getUploadedBlobs() 调用返回一个空映射,此时我的应用程序崩溃,GAE 向我的客户端返回 500。如果 blobstore 在某处给出了问题所在的一些指示,这一切都将更容易调试。

另外,我在仪表板中没有看到任何已创建的 blob,因此我知道它们没有被创建。

谢谢! - - -编辑 - - - 这是一个 fiddler http 捕获的数据:

POST http://MYAPP.appspot.com/_ah/upload/?oauth_token=1%2FTRaFrr7-6m55jqdJBnFovQwS51WsrmNKmhHfTNxEWro&oauth_consumer_key=anonymous&oauth_nonce=I5HbpgtW&oauth_signature_method=HMAC-SHA1&oauth_signature=Ls7CWohqj2829nJV8bIGj2EkDCQ%3D&oauth_version=1.0&oauth_timestamp=1288878313/AMmfu6YAKuBqyq8M8zQ5hpHUAY88LJjYmbPj6Y7663GrW5qa8dYwWLWXpRHtktu_C1dyozhoH8CS2It6hjNQTbBsoFgFcERR_8680rpcv0fnZ1rl_P_0mDw/ALBNUaYAAAAATNK7QSoSJ5sWOxotMwyHoShtadRvqw8P/ HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------------------------28947758029299
User-Agent: MyAppClient
Host: MYAPP.appspot.com
Content-Length: 4678
Expect: 100-continue

-------------------------------28947758029299
Content-Disposition: form-data; name="UploadToken"

aglvcGVua2xlaW9yGgsSEkdvb2dsZUFjY291bnRzVXNlchihnAEM
-------------------------------28947758029299
Content-Disposition: form-data; name="LastInChain"

True
-------------------------------28947758029299
Content-Disposition: form-data; name="CardID"

6f1e4c6a-54b6-49a6-96fc-22e08db3dde4
-------------------------------28947758029299
Content-Disposition: form-data; name="MediaType"

Image
-------------------------------28947758029299
Content-Disposition: form-data; name="HtmlKey"

img0.jpg
-------------------------------28947758029299
Content-Disposition: form-data; name="Position"

0
-------------------------------28947758029299
Content-Disposition: form-data; name="ParentID"

4d386a6e-b742-4249-a2f0-ff33a2300ff0
-------------------------------28947758029299
Content-Disposition: form-data; name="file"; filename="img0.jpg";
Content-Type: image/jpg

�����JFIF��`�`�����C�
*BINARYSTUFFREMOVEDFROMHERE*    

-------------------------------28947758029299--

【问题讨论】:

  • 如果您使用标准 HTML 表单上传到您的应用程序,是否一切正常?您的客户端代码似乎没有生成格式良好的上传,并且 dev_appserver 比生产代码更灵活。
  • 我目前正在制作一个普通的 HTML 表单,看看是否有任何改变。我刚刚编辑了我的问题以包括文件上传的捕获。我花了很多时间将它与 RFC 的预期进行比较,看起来还不错。
  • 我在仪表板日志中注意到以下内容:“POST /mediaupload HTTP/1.1”500 3791 -“MYAPP,gzip(gfe)”,所有请求似乎都包含两个数字,第一个一个是生成的 http 代码和第二个数字,在这种情况下总是“3791”,我找不到任何关于其含义的线索。这个数字可能是来自 blobstore 的一些错误代码吗?

标签: google-app-engine blobstore


【解决方案1】:

我终于解决了我的问题,我的小人是一个分号。

线

"Content-Disposition: form-data; name="file"; filename="img0.jpg";"

应该是:

"Content-Disposition: form-data; name="file"; filename="img0.jpg""

虽然这肯定是我的错误,但我真的希望 blobstore 以一种不那么不透明的方式失败,并且解析器在开发和生产中的行为相同。

在我的错误和这个问题之间: AppEngine BlobStore upload failing with a request that works in the Development Environment 我猜 blobstore 解析器可能是一种喜怒无常的动物。 =)

【讨论】:

    猜你喜欢
    • 2011-11-11
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2021-06-17
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    相关资源
    最近更新 更多