1

https://github.com/blueimp/jQuery-File-Uploadを使用して、Rails アプリの S3 にファイルをアップロードしています (この gem をインストールしました: https://github.com/tors/jquery-fileupload-rails )。

これが私のフォームです。ファイルをアップロードして後でドキュメントを作成するだけなので、form_for ではありません。

  <%= form_tag 'Bucket URL SNIP', :multipart => true, :id => "fileupload" do %>
  <%= hidden_field_tag 'key', @token %>
  <%= hidden_field_tag 'AWSAccessKeyId', ACCESSKEYSNIP %>
  <%= hidden_field_tag 'acl', 'public-read' %>
  <%= hidden_field_tag 'success_action_status', '200' %>
  <%= hidden_field_tag 'policy', controller.s3_policy_document %>
  <%= hidden_field_tag 'signature', controller.signature %>
  <% end %>

jQuery アップローダーは次のように初期化されます。

  $(function () {

      $('#fileupload').fileupload({

        forceIframeTransport: true

      });

  });

すべてが機能し、UI が表示されますが、ファイルのプログレス バーが終了すると、エラーが表示され、ファイルが実際にアップロードされません。

TypeError: iframe が定義されていません。(Firefox) TypeError: TypeError: 未定義のプロパティ '0' を読み取れません (Chrome)

何が問題なのですか?

編集:

Javascript コンソールを見ると、次のようなエラーが表示されます (実際のアドレスを置き換えます)。

Unsafe JavaScript attempt to access frame with URL BUCKETURL from frame with URL SERVERURL. Domains, protocols and ports must match.
4

2 に答える 2

7

私は最近、ファイルを s3 に直接アップロードする方法についての短いチュートリアルを書きました。

http://pjambet.github.com/blog/direct-upload-to-s3/

于 2012-09-30T21:01:44.290 に答える
4

Amazon AWS は最近、CORS のサポートを発表しました。これは、S3 への直接アップロードに iframe メソッドを使用する必要がないことを意味します。これで安心して HTML5 を使用できます。

また、ドラッグ アンド ドロップなどの機能を使用できるようになります。

HTML5 の直接アップロードを有効にするには、バケットのプロパティでバケットの CORS 設定を調整するだけです。

于 2012-09-21T16:22:55.610 に答える