【问题标题】:Angular - PrimeNg - File Upload - PDF file not properly uploading in AWS S3 BucketAngular - PrimeNg - 文件上传 - PDF 文件未在 AWS S3 存储桶中正确上传
【发布时间】:2019-09-21 23:45:26
【问题描述】:

我正在使用 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");
      }
    }

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

【问题讨论】:

    标签: angular amazon-s3 file-upload primeng


    【解决方案1】:

    我找到了解决办法:

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

    解决方案是——直接将files[0]传递给s3 bucket的body,无需读取文件获取内容。

    下面是简单的代码:

    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了解流程。

    【讨论】:

      猜你喜欢
      • 2017-09-17
      • 2015-07-23
      • 2018-04-25
      • 1970-01-01
      • 2018-08-13
      • 2021-02-07
      • 1970-01-01
      • 2018-04-12
      • 2018-12-30
      相关资源
      最近更新 更多