signed authorized S3 uploads kullanıyorum, böylece kullanıcılar dosyaları doğrudan tarayıcılarından S3 sunucumu atlayarak karşıya yükleyebilirler. Bu şu anda çalışır, ancak dosya adı kullanıcının makinesinde olduğu gibidir. S3’e farklı bir isim olarak kaydetmek istiyorum.Tarayıcıdan S3'e dosya gönderme, ancak dosya adının değiştirilmesi
Ben Amazon yayın formdata şuna benzer:
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
Ancak yerine biten dosyayı: sahip olduğu https://s3.amazonaws.com/mybucket/path/inside/bucket/theirFile.mov
Not: https://s3.amazonaws.com/mybucket/path/inside/bucket/myFile.mov
Sanki biter dosya adları ancak benim temel yolum.
Ayrıca belirttiğim dosya adına sahip olmak isterim.
GÜNCELLEME: Güncelleme: Tüm bu çalışmanın başında, orijinal dosya adını geri yüklediğim ve böylece kafamı karıştırdığım bir kovadan diğerine kopyalanan başka bir kod vardı.
Sorunum, kullanıcının karşıya yüklediği dosyanın adı ne olursa olsun dosyayı farklı bir ad vermek istiyorum. – Zugwalt
@Zugwalt sağ ...Bu yüzden kodunuzun 'targetPath' içine koydukları şey, S3'teki araziyi görmek istediğiniz literal dosya adıyla sona ermeli, '$ {filename}' değil, ne olduğunu * düşünüyorum * şu an yaptığınız davranışa dayanarak görüyorum. –
'targetPath' şu anda'/path/inside/bucket/myFile.mov' gibi değişmez yoldur. '$ {Filename}' kullanmıyoruz. Ayrıca öneride bulundu ve 'start-with 'yerine' '' '' '' '' tuşunu kullanmak yerine politikada. Hala hayır şans. – Zugwalt