web-dev-qa-db-ja.com

s3直接アップロードでファイルのサイズとタイプを制限する

初心者の質問ですが、私は少しググったのですが、解決策を見つけることができません。

最初にサーバー経由ではなく、ユーザーがファイルを直接S3にアップロードできるようにしたい。そうすることで、実際にS3にアップロードする前に、ファイルのサイズ制限と許可されているタイプを確認できる方法はありますか?フラッシュではなくJavaScriptを使用することをお勧めします。

25
twb

セキュリティの問題(バケットに巨大なファイルをアップロードする人)について話している場合、はい、ブラウザベースのS3へのアップロードでファイルサイズを制限できます。

「policy」変数の例を次に示します。「content-length-range」がキーポイントです。

"expiration": "'.date('Y-m-d\TG:i:s\Z', time()+10).'",
"conditions": [
    {"bucket": "xxx"},
    {"acl": "public-read"},
    ["starts-with","xxx",""],
    {"success_action_redirect": "xxx"},
    ["starts-with", "$Content-Type", "image/jpeg"],
    ["content-length-range", 0, 10485760]
]

この場合、更新ファイルのサイズが10 MBを超えると、アップロードリクエストはAmazonによって拒否されます。

もちろん、アップロードプロセスを開始する前に、javascriptを使用してファイルサイズを確認し、そうである場合は警告を出す必要があります。

JavaScriptでファイルサイズを取得

56
stonyau

AWSは HTMLを作成する方法を説明するチュートリアルを作成しましたPOST Webサイトの訪問者が標準のWebブラウザーを使用してS3アカウントにファイルをアップロードできるフォーム 。これはS3 preを使用します-改ざんを防止するための署名付きURL。ファイルサイズによってアクセスを制限できます。

4
Trenton