0

自分の S3 ストレージを使用して、アップロードしたばかりの画像を表示したいと考えています。S3 にアップロードされたファイル名を取得するにはどうすればよいですか? たとえば、jpg 画像を UploadCare にアップロードできます。これは私が得ることができる出力です:

しかし、S3 バケットを確認すると、これは実際に S3 にアップロードされたファイル名です。 .jpg

これが私がこれまでに持っているjavascriptです:

var widget = uploadcare.Widget('[role=uploadcare-uploader]');
widget.onChange(group => {
  group.files().forEach(file => {
    file.done(fileInfo => {
      // Try to list the file from aws s3
      console.log('CDN url:', fileInfo.cdnUrl);
      //https://uploadcare.com/docs/file_uploader_api/files_uploads/
      console.log('File name: ', fileInfo.name);
    });
  });
});

4

1 に答える 1

2

ファイル名は S3 にコピーする前にサニタイズされるため、出力ファイル名には次の文字のみを含めることができます。

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

次の関数を使用して、サニタイズされたファイル名を取得できます。

function sanitize(filename) {
  var extension = '.' + filename.split('.').pop();
  var name = filename.substring(0, filename.length - extension.length);
  return name.replace(/[^A-Za-z0-9_]+/g, '') + extension;
}

fileInfo最終的な S3 URL は、S3 ベース URL、オブジェクトから取得できるファイル UUID、およびアップロードされたファイルのサニタイズされた名前で構成できます。

于 2020-09-09T11:54:19.190 に答える