Angular - PrimeNg - 文件上传 - PDF 文件未在 AWS S3 存储桶中正确上传

Angular - PrimeNg - File Upload - PDF file not properly uploading in AWS S3 Bucket

我正在使用 Angular V6 和 aws-sdk 包通过 Prime NG 文件上传库将文件上传到 AWS S3 存储桶中。

我正在尝试使用以下代码上传 PDF 文件,文件正在 S3 存储桶中上传,但是当我打开同一文件时,它显示内容已损坏的错误

我尝试了多种方法,但没有成功。

下面是我的代码:

const files = event.files
    const fileReader = new FileReader();
    if (files && files.length) {
      const fileToRead = files[0];
      if (fileToRead) {
        fileReader.onload = function (fileLoadedEvent) {
          const textFromFileLoaded = fileLoadedEvent.target['result'];
          if (textFromFileLoaded) {
            var bucket = new AWS.S3({ params: { 'Bucket': 'bucket-name' } });
            let content = textFromFileLoaded
            const params = {
              Bucket: "bucket-name/path",
              Key: "filename.ext",
              Body: content,
            };
            bucket.upload(params, function (err, data) {
                // handle the rest part
            })
          }
        }
        fileReader.readAsText(fileToRead, "UTF-8");
      }
    }

我想使用同一个文件上传库上传任何类型的文件。

我找到了解决方案:

问题是 - 我使用 fileReader 方法直接将文件内容传递到 S3 存储桶的主体。

解决方案是 - 直接将 files[0] 传递给 s3 存储桶的主体,无需读取文件并获取内容。

这是简单的代码:

uploadFile(event, type) {
    const file = event.files[0]
    if (file) {
        var bucket = new AWS.S3({ params: { 'Bucket': 'bucket-name' } });
        const params = {
            Bucket: "bucket_name/path",
            Key: filename.ext,
            Body: file ,
        };
        bucket.upload(params, function (err, data) {
            handle the rest part
        })
    }
}

参考link了解流程。