Angular - Amazon S3 - изменение имени файла во время загрузки с подписанного URL-адреса AWS - PullRequest
1 голос
/ 08 ноября 2019

У меня есть файл CSV ( TestFile.CSV ), загруженный на S3 из пользовательского интерфейса, я хочу загрузить этот же файл на другом экране, но мне придется предоставитьПользовательское имя файла (скажем, TestFile_UserName.CSV ) для пользователя, чтобы сохранить / загрузить его на компьютер пользователя.

public downloadFile(key: any): Observable<string> {
let s3 = new AWS.S3();
let downloadUrl = s3.getSignedUrl('getObject', { Bucket: environment.bucket, Key: key });
return of(downloadUrl);}

Эта функция выше дает мне подписанныйURL и который загружают файл автоматически с исходным именем ( TestFile.CSV )

   this.uploadDownloadService.downloadFile(key).subscribe((data) => {
    window.location.href = data;});

Я устанавливаю window.location.href так, чтобы файл

Каков наилучший способ перезаписать имя файла на что-то другое, а затем позволить пользователю загрузить файл?

Оценить любую помощь / предложение

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Я только что нашел решение, которое я мог бы использовать " ResponseContentDisposition " ниже - это рабочий (модифицированный код) код, если он помогает кому-то еще ... https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html#API_GetObject_RequestSyntax

public downloadFile(key: any): Observable<string> {

    let newFileName = 'TestFile_UserName.CSV';
    let s3 = new AWS.S3();
    let downloadUrl = s3.getSignedUrl('getObject', {
      Bucket: environment.bucket,
      Key: key,
      ResponseContentDisposition: 'attachment; filename ="' + newFileName + '"'
    });
    console.log(downloadUrl);
    return of(downloadUrl);
  }

Это приведет к переименованию файла в TestFile_UserName.CSV

, а затем в качестве подписанного URL-адреса будет указано значение href

this.uploadDownloadService.downloadFile(key).subscribe((data) => {
    window.location.href = data;});**strong text**
0 голосов
/ 08 ноября 2019

Я знаю, что вы работаете в JS, но с библиотекой Java s3 вы можете установить для файла настраиваемые заголовки (имя файла при загрузке, тип файла) при вызове предварительно подписанного URL-адреса.

...