javascript - S3 直接上传 + Rails + Dropzone.js

标签 javascript ruby-on-rails amazon-s3 dropzone.js

在过去的两天里,我一直在尝试使用直接上传到 S3 的 dropzone.js 在表单中创建一个 uploader 。

没有 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>

希望大家帮忙

现在很挣扎!

一切顺利 蒂亚戈

最佳答案

这个错误的原因是,我们有两个文件参数,所以 amazon s3 认为我们试图在同一个请求中发送 2 个文件。

<%= file_field_tag :file, multiple: false%> 

在表单中添加一个文件参数,dropzone 添加另一个文件参数,对此有两种解决方案。

  1. 快速修复 - 只需简单地删除表单中的 file_field,一切都会正常进行。
  2. 解决方案 - 添加一个后备类,如下所示,这样 dropzone.js 会自动将其静音。

//像这样,

<%= content_tag :div, class: "fallback" do %>
<%= file_field_tag :file, multiple: false%>
<% end %>

当禁用或不支持 javascript 时,正常输入文件将以这种方式显示。

关于javascript - S3 直接上传 + Rails + Dropzone.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520850/

相关文章:

javascript - 使用 js 或 jquery 限定 html 数据的范围

javascript - 在 JavaScript 中创建时间戳

javascript - 从indexeddb中删除特定存储

python - appengine urllib 是否使用 SSLv3?传输安全协议(protocol)?

apache-spark - 相同大小但行长度不同的 Spark 读取性能差异

javascript - Uncaught Error : cannot call methods on dialog prior to initialization using jQuery

ruby-on-rails - Rails 服务对象返回 'No Method error'

ruby-on-rails - AFNetworking HTTPClient 从 Rails JSON 服务接收 406

ruby-on-rails - rails : Converting currency from form to big decimal

amazon-s3 - 将文件上传到 S3 时的 OptionsRequestDenied