ユーザーがAmazon S3に直接ファイルをアップロードするためのHTML 5 AJAXライブラリ/フレームワークを探しています。目標は、Webサーバーに添付ファイルをアップロードしないようにすることです(WebサーバーがAmazonサーバーに転送するときにブロックされるため)。私の理解は、XDomainRequest
を使用してこれが可能でなければならないが、私はどのように理解できない。HTML 5 Amazon S3ダイレクトアップローダー
Ruby-on-railsを実行していて、アップロードしたファイルにWebサーバーにポストされる一時的な名前(UUIDを使用)を割り当てて、後でそのファイルを名前を変更してpaperclipと統合できるようにしたい。
アイデア?これはjQueryが処理できるものですか? Flashはこのプロジェクトのオプションではありません。ありがとう!
編集:
私は基本ポストの作業を取得するために管理が、まだ問題を抱えているのです。私は、どのヘッダが必要なのか正確にはわかりません。また、リクエストにAmazonの必須パラメータをエンコードする方法もあります(リクエストヘッダーに入れることはできますか?)。
const XMLHTTPFactories = [
function() { return new XDomainRequest(); },
function() { return new XMLHttpRequest(); },
function() { return new ActiveXObject("Msxml2.XMLHTTP"); },
function() { return new ActiveXObject("Msxml3.XMLHTTP"); },
function() { return new ActiveXObject("Microsoft.XMLHTTP"); },
];
var xhr = null;
for (var i = 0; i < XMLHttpFactories.length; i++) {
try { xhr = XMLHttpFactories[i](); break; } catch (exception) { continue; }
}
$(this).change(function() {
for (var i = 0; i < this.files.length; i++) {
var file = this.files[i];
xhr.open(settings.method, settings.url, true);
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.setRequestHeader("Access-Control-Allow-Origin", "*")
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("X-File-Name", file.fileName);
xhr.setRequestHeader("X-File-Size", file.fileSize);
xhr.send(file);
}
編集:ここでは、これまでの私の進歩である私はcrossdomain.xml
ファイルをアップロードした
XMLHttpRequest cannot load http://bucket.s3.amazonaws.com/ . Origin http://local.app is not allowed by Access-Control-Allow-Origin.
:さらにアップデートした後
が、私は次のエラーを取得することができましたワイルドカード(*)ドメインからのアクセスを許可します。継続するかどうかはわからない...
編集:
行わより多くの調査を持った後、私はJavaScriptをPOSTがS3に可能ではないかもしれないことを考え始めています。移転する前にEC2インスタンスに転記する必要がありますか?私はマイクロインスタンスを確保することができるかもしれませんが、私は可能な限りS3に直接行くことを好むでしょう!ありがとう!
編集:
私はアマゾンのフォーラムに質問を投稿し、任意のフィードバックを受け取っていません。相互参照については、他の投稿はhttps://forums.aws.amazon.com/message.jspa?messageID=206650#206650で見つけることができます。
返信いただきありがとうございます! Amazon S3で 'Access-Control-Allow-Origin'ヘッダーを設定できるかどうか分かりますか? –
@ケビン私はこれを研究してきました。 Amazon S3はこのヘッダをバケット*または*オブジェクトに設定することはサポートしていません。詳細は、[スレッド](https://forums.aws.amazon.com/message.jspa?messageID=160131)を参照してください。 Amazonは、彼らの(不足している)回答に応じて、将来それをサポートすることに全く関心がないようだ。 –
@Danありがとうございます。私は実際にそのスレッドの「ポスター」であり、希望をあきらめました。 –