簡體   English   中英

如何在javascript中將pdf文件上傳到s3?

[英]How to upload pdf file to s3 in javascript?

我需要將一個 pdf 文件從 UI(用 Javascript 編寫)上傳到 Amazon S3,但我正在嘗試將文件上傳到 S3,我得到了一些 unicode 格式的文本,當我將該文本復制到記事本時,或者說,任何其他文本編輯器我可以人類可讀的文本

我正在使用 pdfmake 獲取文件的內容並使用 getBufffer 方法上傳它。

var content = generatePDF(base64Img);
pdfMake.createPdf(content).getBuffer(function (data) {//Code}

我用來將文件上傳到 S3 的代碼。

 var params = {
        Bucket: bucketName,
        Key: file_name,
        Body: data.toString(),
        ContentType: 'application/pdf'
      }

      s3.upload(params, function (err, data) {
        if (err) {
        // code 
        }else{
         //code
}

該文件已成功上傳,但我收到的文字如下

!
 " #$%&!' ()*')+,
!
!
!
!

但是我正在將它粘貼到其他文本編輯器,我正在

Date: 04/20/19

我通過將數據從 getBuffer 傳遞到 S3 解決了上述問題。 在 S3 中,我傳遞給了一個緩沖區

var data = new Buffer(event.data, 'binary');

將數據上傳到S3。

var params = {
        Bucket: bucketName,
        Key: file_name,
        Body: data,
        ContentType: 'application/pdf'
      }

      s3.upload(params, function (err, data) {
        if (err) {
        // code 
        }else{
         //code
}

要將文件從客戶端直接上傳到 s3 存儲桶,您可以使用multer-s3

從客戶端:

axios.post(url, data, {
        onUploadProgress: ProgressEvent => {
          this.setState({
            loaded: (ProgressEvent.loaded / ProgressEvent.total * 100),
          })
        },
      })
        .then(res => { // then print response status
          toast.success('Upload Success!')
        })
        .catch(err => { // then print response status
          toast.error('Upload Failed!')
        })

服務器端:

    const upload = multer({
    storage: multerS3({
    s3: s3,
    acl: 'public-read',
    bucket: BUCKET_NAME,
    key: function (req, file, cb) {
      UPLOADED_FILE_NAME = Date.now() + '-' + file.originalname;
      cb(null, UPLOADED_FILE_NAME);
      }
     })
    }).array('file');

    app.post('/upload', function (req, res) {
      upload(req, res, function (err) {

        if (err instanceof multer.MulterError) {
          return res.status(500).json(err)
          // A Multer error occurred when uploading.
         } else if (err) {
           return res.status(500).json(err)
          // An unknown error occurred when uploading.
       }
      console.log('REQUEST FILE IS', UPLOADED_FILE_NAME)
      return res.status(200).send(UPLOADED_FILE_NAME)

      // Everything went fine.
      })
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM