2012-11-15 3 views
16

Eine neue Frage, aber ich habe abit gegoogelt und kann nicht scheinen, irgendeine Lösung zu finden.s3 direkten Upload Dateigröße und Art zu beschränken

Ich möchte Benutzern ermöglichen, Dateien direkt auf S3, nicht über meinen Server zuerst hochzuladen. Gibt es eine Möglichkeit, die Dateien auf Größenbeschränkung und zulässige Typen zu prüfen, bevor sie tatsächlich in S3 hochgeladen werden? Vorzugsweise nicht Flash, sondern Javascript.

Antwort

36

Wenn Sie über Sicherheitsproblem sprechen (Leute, die eine riesige Datei in Ihren Bucket hochladen), können Sie die Dateigröße mit browserbasiertem Upload auf S3 beschränken.

Hier ist ein Beispiel für die Variable "policy", wobei "content-length-range" der Schlüsselpunkt ist.

"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] 
] 

In diesem Fall, wenn die uplaoding Dateigröße> 10 MB, werden die Upload-Anforderung von Amazon abgelehnt.

Bevor Sie mit dem Hochladen beginnen, sollten Sie natürlich Javascript verwenden, um die Dateigröße zu überprüfen und einige Warnmeldungen zu senden.

getting file size in javascript

+2

Weitere Informationen zum Anwenden der Richtlinie sowie weitere Überlegungen finden Sie unter https://aws.amazon.com/articles/1434. – Trenton

+0

Die Richtlinie ist Teil des Formulars, das auf der Clientseite festgelegt wurde. Wenn ein Hacker eifrig genug ist, kann er Ihre base64-Policy dekodieren und die Dateigröße oder -art eingeben. – Kareem

+2

@Kareem Das Richtliniendokument ist signiert, sodass jede Manipulation dazu führt, dass die Anforderung fehlschlägt. –

-5

Um zu tun, was Sie tun möchten, müssen Sie über Ihren eigenen Web-Service hochladen. Dies ist wahrscheinlich der beste Weg, um Ihren Endbenutzern globalen Schreibzugriff auf Ihren S3-Bucket zu bieten, ist ein Sicherheitsalbtraum, nicht zu erwähnen, dass nichts daran hindern würde, riesige Dateien hochzuladen und Ihre Gebühren aufzuladen.