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
Node.js 重命名Multer-s3上上载的图像_Node.js_Amazon S3_Multer_Multer S3 - Fatal编程技术网

Node.js 重命名Multer-s3上上载的图像

Node.js 重命名Multer-s3上上载的图像,node.js,amazon-s3,multer,multer-s3,Node.js,Amazon S3,Multer,Multer S3,概述: const upload = multer({ storage: multerS3({ s3: s3, bucket: 'my-bucket', contentType: multerS3.AUTO_CONTENT_TYPE, acl: 'public-read', key: function (request, file, cb) { cb(null, folder + Date.now() + file.originalna

概述:

  const upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'my-bucket',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    acl: 'public-read',
    key: function (request, file, cb) {
      cb(null, folder + Date.now() + file.originalname);
    }
  }),
  limits:{
    fileSize: 1024 * 1024 * 5
  },
  fileFilter:fileFilter
});
我正在使用S3来让用户上传图片。 我正在使用
PUT
方法进行更新路由,该方法获取存储在
S3
bucket中临时文件夹中的给定图像的url,并将其删除到图像文件夹中

这是我的上传对象:

  const upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'my-bucket',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    acl: 'public-read',
    key: function (request, file, cb) {
      cb(null, folder + Date.now() + file.originalname);
    }
  }),
  limits:{
    fileSize: 1024 * 1024 * 5
  },
  fileFilter:fileFilter
});
在我使用的路由文件中:

upload.single('the_key_of_the_file')
问题:

  const upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'my-bucket',
    contentType: multerS3.AUTO_CONTENT_TYPE,
    acl: 'public-read',
    key: function (request, file, cb) {
      cb(null, folder + Date.now() + file.originalname);
    }
  }),
  limits:{
    fileSize: 1024 * 1024 * 5
  },
  fileFilter:fileFilter
});
此对象在上载新文件时工作,但不用于更新 它(重命名文件)


问题如下:

key: function (request, file, cb) {
      cb(null, folder + Date.now() + file.originalname);
    }
Actully key是aws-s3中文件的名称/id。您提供了一个新密钥,因此s3将标记为新文件

您可以根据您想要的名称在这里更改逻辑,它应该是字符串

例如:

key: function (req, file, cb) {
    console.log(file);
    cb(null, `${Date.now().toString()}${file.originalname}`);
}

这可能不是你需要在存储中传递的对象

 filename: function (req, file, cb) {
  cb(null, file.fieldname + '-' + Date.now()+path.extname(file.originalname))
}