使用 express 使用 Multer-S3 将高于几 MB 的文件直接上传到 S3

Uploading files higher than few MBs directly to S3 using Multer-S3 using express


我正在尝试使用 Multer-S3 将 PDF 文件直接上传到使用快速服务器的 S3。
出于某种原因,当我尝试上传 SVG 文件时效果很好,但是当我尝试上传其他文件(如 PDF)时没有错误,但是当我尝试访问我的 S3 存储桶中的文件时,它没有打开或显示空白 PDF 页面。

我的代码:

filesService.js

const multer = require('multer');
const multerS3 = require('multer-s3-transform');
const AWS = require('aws-sdk');
const BUCKET_NAME = process.env.FILES_BUCKET_NAME;
const s3 = new AWS.S3({});

var limits = {
   files: 1, // allow only 1 file per request
   fileSize: 20 * 1024 * 1024 *1024, // (replace MBs allowed with your desires)
};

const upload = multer({
   limits: limits,
   storage: multerS3({
      acl: "public-read",
      s3: s3,
      bucket: BUCKET_NAME,
      contentType: multerS3.AUTO_CONTENT_TYPE,
      key: (req, file, cb) => {
          console.log(file);
          cb(null, file.originalname)
      }
  })
}).single('file');

module.exports = {upload};

route.js

router.post('/files', async (req, res ,next) => {
await filesService.upload(req, res, (err) => {
   if(err) {
       console.error(err);
   } else {
       console.log(req.file);
       location = req.file.location;
       res.status(200).send({link: req.file.location});
   }
});

res.status(500);
})

我正在尝试使用具有以下配置的 Postman 来完成此操作:
Headers: Content-Type - multipart/form-data
Body:键:文件,值:PDF 已选择


我的路线没有返回错误,但是当我尝试访问不同于 SVG 的文件时,它再次不起作用。

作为替代方案,由于我们选择使我们的 PDF 更大,我们决定将 PDF 生成器从前端移动到后端,因此不再需要为此使用 Multer,我们使用 pdfkit npm 包在 Express 后端服务器上生成 PDF,然后使用 aws-sdk npm 包直接从同一服务器生成 PDF 后将其上传到相关的 S3 存储桶。

所以,最后我们选择做的只是将相关的PDF数据从前端发送到后端,并在后端生成PDF。