如何通过DigitalOCEAN空间中的请求S3删除文件夹或文件

时间:2019-01-29 15:36:53

标签: javascript node.js amazon-s3 digital-ocean

我试图处理一项出色的服务,即Digital Ocean中的Space。 Here是有关上传文件的很好的解释,但仅涉及GET请求,而与DELETE无关。也许有人在Node JS上拥有S3和Digital Ocean Space的使用经验?

使用本地服务器,我在Space的设置中发现可以提供“ Origin”和“ Allowed Methods” GET的“ Advanced CORS Options”。 但是PUT,DELETE,POST,HEAD是禁用的。

这是我要尝试的:

export default {
  upload: (req, res) => {
    const storage = multerS3({
      s3,
      bucket,
      contentType: multerS3.AUTO_CONTENT_TYPE,
      acl: 'public-read',
      key: function(req, file, callback) {
        const { email } = req.user;

        callback(null, email + '/' + file.originalName);
      },
    });

    const upload = multer({ storage }).array('upload', 3);

    upload(req, res, err => {
      if (err) {
        return res.status(422).send({
          errors: [{ title: 'Image Upload Error', detail: err.message }],
        });
      } else {
        console.log('Success upload file');
      }
      res.end();
    });
  },

  delete: (req, res) => {
    const params = { Bucket: bucket, Key: 'some-folder-name-here' };
    s3.deleteObjects(params, function(err, data) {
      if (err) {
        return res.send({ error: err });
      }
      res.send({ data });
    });
  }
}

实际上,如果可以使用简单的s3 API通过本地主机删除和上传文件,那应该很棒。

谢谢。

更新:

Mistake在这里:s3.deleteObjects,必须使用s3.deleteObject,是的,必须在Key中使用没有存储桶名称的整个路径。 完美说明here。谢谢大家。

0 个答案:

没有答案