如何添加从存储桶中删除对象的方法?

Posted

技术标签:

【中文标题】如何添加从存储桶中删除对象的方法?【英文标题】:How to add a method to delete a object from the bucket? 【发布时间】:2019-06-26 01:30:07 【问题描述】:

我想创建一种方法来从存储桶中删除已上传的对象。有一种方法可以将对象上传到存储桶中,但没有删除它们的方法。告诉我该怎么做?

我是为查看器 autodesk Forge 做的,其源代码从 here 下载。

我试着自己做,但我失败了。下载的源代码没有变化,但无论如何我都可以展示我不成功的代码。

// POST /api/forge/oss/buckets - delete file.
router.post('/objects', multer( dest: 'delete/' ).single('fileToDelete'), async (req, res, next) => 
  fs.readFile(req.file.path, async (err, data) => 
    if (err) 
      next(err);
    
    try 
      // Upload an object to bucket using [ObjectsApi](https://github.com/Autodesk-Forge/forge-api-nodejs-client/blob/master/docs/ObjectsApi.md#uploadObject).
      await new ObjectsApi().deleteObject(req.body.bucketKey, req.file.originalname);
      res.status(200).end();
     catch(err) 
      next(err);
    
  );
);
  <form id="upLoadFile" method='post' enctype="multipart/form-data">
    <input id="hiddenUploadFiled" type="file" name="theFile" style="visibility:hidden" />
  </form>

我希望有一种方法可以添加一种方法来从存储桶中删除加载的对象。

【问题讨论】:

不是解决方案,但您确实应该使用“删除”而不是“发布” 我也试过了。 【参考方案1】:

也尝试传入您的 oauth 凭据:

 objectsApi.deleteObject(bucketKey,fileName,oAuth2TwoLegged, oAuth2TwoLegged.getCredentials());

请参阅deleteObjecthere 和代码示例here 的用法文档

当您说您下载了源代码时,如果您可以通过 NPM 安装我们最新的 Forge Node 客户端 SDK 并将所需的模块导入您的项目中,那么事情会变得容易得多。见说明here

【讨论】:

Bryan Huang,非常感谢。但是我有一个问题,我用的是axios,如何在查看器中添加一些模型? 使用 axios 只需使用 DELETE 动词来调用我们的端点,例如 axios.delete('https://developer.api.autodesk.com/oss/v2/buckets/yourBucketName/objects/yourObjectName', 'authorization': 'Bearer yourAccessToken')。可以在我的答案中查看文档以获取 API 详细信息。

以上是关于如何添加从存储桶中删除对象的方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何从亚马逊 s3 存储桶中删除文件?

如何强制删除 S3 存储桶中的所有对象版本,然后最终使用 aws-sdk-go 删除整个存储桶?

如何从S3存储桶中的文件夹中删除带后缀的图像

如何(批量)删除Amazon S3存储桶中几百个文件的列表

java AWS S3从版本存储桶中删除所有对象

气流:每日刷新后如何在 s3 存储桶中公开对象