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

时间:2019-05-03 12:16:23

标签: angular amazon-s3 file-upload primeng

我正在使用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': 'pulse-elasticsearch' } });
            let content = textFromFileLoaded
            const params = {
              Bucket: "pulse-elasticsearch" + "/temp",
              Key: fileToRead.name,
              Body: content,
              // contentType : 'application/pdf'
            };
            bucket.upload(params, function (err, data) {
                // handle the rest part
            })
          }
        }
        fileReader.readAsText(fileToRead, "UTF-8");
      }
    }

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

1 个答案:

答案 0 :(得分:0)

我找到了解决方法:

问题是-我正在使用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了解流程。