5

我正在尝试使用节点 js 将文件上传到 AWS S3。

我的要求是在 multerS3 存储对象中使用动态值作为存储桶

storage: multerS3({

        s3: s3,

        bucket:  function (req, file, cb) {
            console.log(" bucketName is >> "+JSON.stringify(req.bucketName));
            cb(null, req.bucketName)
        },

        limits : {
            fileSize : Number(Constants.UPLOADED_IMAGE_SIZE)
        },
        metadata: function (req, file, cb) {
            cb(null, { fieldName: file.fieldname });
        },

        key: function (req, file, cb) {
            cb(null, file.originalname)
        }
    })

我正在尝试通过请求对象传递值并在存储桶参数中使用它。但它是未定义的。

在这两种情况下 req.bucketName 和 req.body.bucketName 都是未定义的。

需要帮助来解决这个问题。

我的邮递员要求如下

在此处输入图像描述

谢谢你的帮助。

4

1 回答 1

5

如果你使用 Postman 并且有一个文件作为参数,那么在它被包含之后就没有别的了。

交换参数的顺序,并在文件前面添加 bucketName,您将在正文中看到它。

第一张图片显示了不正确的顺序,body 将没有 bucketName 元素。第二张图片将正确地通过 Busboy,并且主体将有一个 bucketName 元素“testName”。

这将有一个使用 Busboy 和 Node 的空白主体

body.bucketName 将返回“testName”

于 2018-09-26T15:51:18.387 回答