Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Express 从控制器获取multerS3密钥_Express_Amazon S3_Multer - Fatal编程技术网

Express 从控制器获取multerS3密钥

Express 从控制器获取multerS3密钥,express,amazon-s3,multer,Express,Amazon S3,Multer,我正在使用multer在AmazonS3中存储文件。我需要从控制器模块获取文件的multerS3密钥,以便以后访问。我的路线模块: var express = require('express'); var router = express.Router(); var post_controller = require('../controllers/postController') var aws = require('aws-sdk'); var multer = require('mult

我正在使用multer在AmazonS3中存储文件。我需要从控制器模块获取文件的multerS3密钥,以便以后访问。我的路线模块:

var express = require('express');
var router = express.Router();
var post_controller = require('../controllers/postController')
var aws = require('aws-sdk');
var multer = require('multer');
var multerS3 = require('multer-s3');
var mongoose = require('mongoose');
const s3 = new aws.S3();
const upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'compressor-input',
    metadata: function(req, file, cb) {
      cb(null, {fieldName: file.fieldname});
    },
    key: function (req, file, cb) {
      cb(null, mongoose.Types.ObjectId())
    }
  })
});

router.post('/:id/upload', upload.array('item_images', 12), post_controller.images_upload);

MulterS3不公开任何特定于文件的参数。您应该在控制器中使用S3.putObject(),并在传递给router.post函数的中间件或控制器模块中生成密钥。Express fileupload在使用S3.putObject()时非常有用,因为它公开了Express request对象中的文件,如:
req.files

req.files将包含有关Amazon返回的上传文件的所有信息

app.post('/upload', upload.array('photos', 3), function(req, res, next) {
  
  console.log(req.files)
  
  res.send('Successfully uploaded ' + req.files.length + ' files!')
})