在过去的两天里,我一直在尝试使用dropzone.js在表单中创建一个上传器,直接上传到S3。
没有Dropzone它工作正常(遵循本教程:http://www.blitztheory.com/direct-upload-with-s3_direct_upload/)
问题在于,在我的平台中,Dropzone被广泛使用,并且希望保留格式。
亚马逊返回的错误如下:
<?xml version="1.0" encoding="UTF-8"?> <Error><Code>InvalidArgument</Code><Message>POST requires exactly one file upload per request.</Message><ArgumentValue>2</ArgumentValue><ArgumentName>file</ArgumentName><RequestId>0B044292C584D2F3</RequestId><HostId>X6S+LR28zGb7wftDgG3gKYCWC8SlHI/sr0PN7ICR2oohtFe5BEib9O2+d7n0b9azPEMTA2USlng=</HostId></Error>
形式:
<%= s3_uploader_form callback_url: raffles_url,
id: "s3_uploader",
acl: "private",
callback_param: "direct_upload_url",
max_file_size: 40.megabytes, class: "dropzone" do %>
<%= hidden_field_tag "Content-Type", "" %>
<%= hidden_field_tag :file, multiple: false %>
<% end %>
<br/>
<script>
Dropzone.options.myAwesomeDropzone = {
paramName: "file", // The name that will be used to transfer the file
maxFilesize: 2, // MB
uploadMultiple: false
};
</script>
希望任何人都可以提供帮助
现在苦苦挣扎!
一切顺利 蒂亚戈
答案 0 :(得分:3)
这里有一篇很棒的文章 http://sudharti.github.io/articles/dropzone-rails/
只需将上传器更改为:雾,您应该启动并运行
答案 1 :(得分:2)
出现此错误的原因是,我们有两个文件参数,因此amazon s3认为我们尝试在同一请求中发送2个文件。
<%= file_field_tag :file, multiple: false%>
在添加文件参数的表单中,dropzone添加另一个文件参数,有两个解决方案。
//像这样,
<%= content_tag :div, class: "fallback" do %>
<%= file_field_tag :file, multiple: false%>
<% end %>
当禁用或不支持javascript时,普通输入文件将以这种方式显示。