This articleは、フォームを使用してAmazon S3またはminioにファイルをアップロードする方法を示しています。最も安全であるように見えるので、事前署名されたPOST URLポリシーメソッドを使用したいと思います。JavaScriptを使用して、ブラウザからMinioまたはS3に事前に署名されたPOST URLにファイルをアップロードする方法
ただし、ブラウザを使用してプログラムをミニオまたはS3にプログラムでアップロードしたいとします。言い換えれば、私はフォームではなく、javascriptを使いたいと思っています。
私は.field()
と.attach()
操作を使用して、フォームフィールドを設定してファイルをアップロードするのに使いやすい、superagentをよく知っています。
これは、ノードで動作します。これは、ブラウザでは動作しません
let cdnAgent = superagent;
let req = cdnAgent.post(r.data.pictureSet.uploadLink);
_.each(uploadForm, function(value, key) {
req.field(key, value);
});
// upload file via the created signed policy
return req
.set('Content-Type', 'application/octet-stream')
.attach('file', 'test/data/test.jpg');
}).then(r => {
しかし、.attach()
がサポートされていない、と私はその周りに働いていたとき、私のjavascriptのドメインが分離されているので、私はCORSの問題に遭遇しました私のminioまたはS3ドメインからのドメイン。
この質問に答えるには、ドメイン間で動作するXMLHttpRequest、Axios、superagent、またはFetchを使用した完全な例をご覧ください。
これにはいくつかの類似の質問といくつかの回答がありますが、すべてが古くなっているように見え、技術は動いています。だから私はこれが重複した質問ではないと思う。
バケット支持[カスタムCORS応答(http://docs.aws.amazon.com/AmazonS3/latest/dev/cors。 html)ので、問題のその部分を回避することができます。 –
CORSはデフォルトでminioでオンになっていますが、これは私がテストしていたものです。しかし、Amazon CORSリンクのおかげで、おそらくそれはある時点で必要になるでしょう。 –
申し訳ありませんが、私は脳にS3を持っていて、minioの複数の言及を完全に光りました。 –