Sto utilizzando signed authorized S3 uploads in modo che gli utenti possano caricare i file direttamente dal browser su S3 ignorando il mio server. Al momento funziona, ma il nome del file è lo stesso del computer dell'utente. Mi piacerebbe salvarlo su S3 come nome diverso.Invio di file direttamente dal browser a S3 ma modifica del nome del file
Il formdata ho posto ad Amazon si presenta così:
var formData = new FormData();
formData.append('key', targetPath); // e.g. /path/inside/bucket/myFile.mov
formData.append('AWSAccessKeyId', s3Auth.AWSAccessKeyId); // aws public key
formData.append('acl', s3Auth.acl); // e.g. 'public-read'
formData.append('policy', s3Auth.policy); // s3 policy including ['starts-with', '$key', '/path/inside/bucket/']
formData.append('signature', s3Auth.signature); // base64 sha1 hash of private key and base64 policy JSON
formData.append('success_action_status ', 200); // response code 200 on success
formData.append('file', file.slice()); // e.g. /path/on/user/computer/theirFile.mov
Tuttavia al posto del file fino a raggiungere: https://s3.amazonaws.com/mybucket/path/inside/bucket/myFile.mov
Si finisce come: https://s3.amazonaws.com/mybucket/path/inside/bucket/theirFile.mov
Nota ha il loro nome file ma il mio percorso di base.
Mi piacerebbe che avesse anche il nome file che ho specificato.
AGGIORNAMENTO: Aggiornamento: questo funzionava da sempre Avevo semplicemente un altro codice copiato da un bucket all'altro che ripristinava il nome del file originale e mi confondeva.
Il mio problema è che voglio dare un nome al file qualcosa di diverso, indipendentemente dal nome del file che l'utente carica. – Zugwalt
@Zugwalt right ...questo è il motivo per cui ciò che il tuo codice inserisce in "targetPath" deve terminare con il nome file letterale che vuoi vedere in S3, non "$ {filename}", che è quello che * penso * stai facendo ora, in base al tuo comportamento stiamo vedendo. –
'targetPath' in questo momento è il percorso letterale, ad esempio'/percorso/interno/bucket/myFile.mov'. Non usare affatto $ {nomefile} '. Anche preso il tuo suggerimento e nella policy invece di usare 'starts-with', ora uso solo il tasto'. Ancora senza fortuna. – Zugwalt