我正尝试使用S3的直接上传支持(http://aws.amazon.com/articles/1434)将相机媒体从触发器的文件和相机模块上传到S3。我已经把这个与本地网络合作得很好,但是我得到了S3" MaxPostPreDataLengthExceeded"我在Trigger中复制相同请求时出现异常。
我查看了原始请求,看起来一个微妙的区别是导致触发失败。
这是来自Webkit的原始POST数据:
------WebKitFormBoundaryCl5fCuacIKQjcEfA
Content-Disposition: form-data; name="key"
uploads/2013-08-29/upload.jpeg
------WebKitFormBoundaryCl5fCuacIKQjcEfA
Content-Disposition: form-data; name="AWSAccessKeyId"
...
------WebKitFormBoundaryCl5fCuacIKQjcEfA
Content-Disposition: form-data; name="success_action_status"
201
------WebKitFormBoundaryCl5fCuacIKQjcEfA
Content-Disposition: form-data; name="file"; filename="file.jpg"
Content-Type: image/jpeg
????JFIF??XExifMM?i&??...
这是来自forge.request.ajax({data: ..., files: [(file object)]})
:
--2268A38A1BB344B5BBEE83586818388A
Content-Disposition: form-data; name="key"
uploads/2013-08-30/upload.jpeg
--2268A38A1BB344B5BBEE83586818388A
Content-Disposition: form-data; name="AWSAccessKeyId"
...
--2268A38A1BB344B5BBEE83586818388A
Content-Disposition: form-data; name="success_action_status"
201
--2268A38A1BB344B5BBEE83586818388A
Content-Disposition: file; name="file"; filename="file.jpg"
Content-Type: image/jpg
????JFIF??XExifMM?i&??...
(仅)差异在于使用FormData字段的webkit中,文件具有form-data
内容处置。在触发器中,文件具有file
内容处置。这导致S3将文件二进制内容注册为表单的一部分;因此MaxPostPreDataLengthExceeded
例外和400 Bad Request响应。
有这种差异的原因吗?我没有在文档中看到任何方式来自定义这些文件的内容处理。有这样的方式吗?我是否需要自己构建此功能?我没有看到S3发生变化,那么在Trigger的功能中是否有任何选项可供使用?
答案 0 :(得分:3)
看起来这只是触发器上传代码中的一个错误,我刚刚发布了修复此请求模块的更新版本(版本2.2)。
感谢您对问题的详细描述。