首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用javascript将pdf文件上传到s3?

问如何用javascript将pdf文件上传到s3?
EN

Stack Overflow用户
提问于 2019-04-23 05:39:30
回答 2查看 4.7K关注 0票数 2

我需要将一个pdf文件从UI(用Javascript编写)提升到S3,但我试图将该文件上传到S3,我得到一些unicode格式的文本,当我将该文本复制到记事本,或者说,任何其他文本编辑器,我可以将人类可读的文本。

我正在使用pdfmake获取文件的内容,并使用getBufffer方法上传它。

代码语言:javascript
复制
var content = generatePDF(base64Img);
pdfMake.createPdf(content).getBuffer(function (data) {//Code}

我用来将文件上传到S3的代码。

代码语言:javascript
复制
 var params = {
        Bucket: bucketName,
        Key: file_name,
        Body: data.toString(),
        ContentType: 'application/pdf'
      }

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

该文件正在成功上传,但我得到的文本如下

代码语言:javascript
复制
!
 " #$%&!' ()*')+,
!
!
!
!

但是我把它粘贴到其他文本编辑器,我得到了

代码语言:javascript
复制
Date: 04/20/19
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-23 14:16:48

通过将数据从getBuffer传递到S3,解决了上述问题。在S3中,我传递给一个缓冲区,如

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

将数据上传到S3。

代码语言:javascript
复制
var params = {
        Bucket: bucketName,
        Key: file_name,
        Body: data,
        ContentType: 'application/pdf'
      }

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

Stack Overflow用户

发布于 2020-04-14 18:26:56

要将文件从客户端直接上载到s3桶,可以使用穆特-S3。

来自客户端:

代码语言:javascript
复制
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!')
        })

服务器端:

代码语言:javascript
复制
    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.
      })
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55804958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档