2012-11-15 15 views
16

Una domanda per principianti, ma ho cercato su Google e non riesco a trovare alcuna soluzione.s3 caricamento diretto limitando le dimensioni del file e digitare

Desidero consentire agli utenti di caricare direttamente i file su S3, non prima tramite il mio server. In questo modo, è possibile controllare i file per limiti di dimensioni e tipi consentiti prima di caricare effettivamente su S3? Preferibilmente non usare il flash ma javascript.

risposta

36

Se si parla di problemi di sicurezza (persone che caricano file enormi nel secchio), sì, È possibile limitare le dimensioni del file con il caricamento basato su browser su S3.

Ecco un esempio della variabile "policy", dove "content-length-range" è il punto chiave.

"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 questo caso, se la dimensione del file di uplaoding> 10mb, la richiesta di caricamento verrà respinta da Amazon.

Ovviamente, prima di iniziare la procedura di caricamento, è necessario utilizzare javascript per verificare le dimensioni del file e fare alcuni avvisi se lo fa.

getting file size in javascript

+2

Vedere https://aws.amazon.com/articles/1434 per ulteriori dettagli su come applicare la politica, nonché altre considerazioni. – Trenton

+0

La politica fa parte del modulo impostato sul lato client. Se un hacker è abbastanza appassionato, può decodificare la tua policy di base64 e inserire qualsiasi dimensione o tipo di file. – Kareem

+2

@Kareem Il documento della politica è firmato, quindi eventuali manomissioni causeranno il fallimento della richiesta. –

-5

Per fare ciò che si vuole fare, è necessario caricare tramite il proprio servizio web. Questo è probabilmente il migliore in ogni caso, poiché fornire un accesso globale in scrittura ai tuoi utenti finali al tuo S3 bucket è un incubo per la sicurezza, senza menzionare che non ci sarebbe nulla che impedisca loro di caricare file enormi e di caricare i tuoi addebiti.

Problemi correlati