如何使用Dropzone JS获取Amazon S3响应标头?

时间:2014-01-16 20:28:22

标签: javascript jquery amazon-s3 dropzone.js

我正在开发一个新网站,用户可以将文件上传到Amazon S3存储桶。在评估了jQuery的不同上传库之后,我最终选择了Dropzone JS。

我能够将Dropzone集成到我的应用程序中,以便将文件直接上传到Amazon S3存储桶。上传时一切正常。

但是我在使用jQuery阅读亚马逊的回复时遇到了麻烦。特别是,我想获得来自亚马逊的响应的Location标头。此位置标头包含处理上传文件所需的信息,但我无法使用Dropzone获取该信息。任何人都可以建议如何获取XHR响应标头?检查代码我不认为这是可能的,似乎我们只能得到响应文本而不是标题。

2 个答案:

答案 0 :(得分:2)

请参阅How to get read data from response header in jquery/javascript以获取回复信息。

假设您正在使用AWS POST操作http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html

我怀疑它返回的URI是亚马逊域名的https://s3.amazonaws.com/Bucket/Object

如果您使用“网络”存储桶并想要使用自定义域,则必须自行解决。您已经拥有了桶名称,因为您在通话中提供了该名称。

另一个皱纹可能是上传后文件的权限。请务必在相应的上传路径上设置策略。

答案 1 :(得分:0)

根据dropzone的创建者,XHR对象作为file.xhr存储在文件本身中。因此,如果您想访问其参数,则必须执行console.log(file.xhr."what you want to access")

我建议你先console.log(file.xhr)查看其内容。它会让您了解可用的值。

但是,响应标头为"unsafe",除非您向存储桶添加CORS策略以标记它们是安全的,否则无法查看。

因此,如果您想要访问Location标头,则需要添加

<ExposeHeader>location</ExposeHeader>

到你的CORS政策。 然后,您现在可以像这样访问它

console.log(file.xhr.getResponseHeader("Location"));

抱歉复活旧帖子