【问题标题】:api for deleting image from google cloud storage buckets用于从谷歌云存储桶中删除图像的 api
【发布时间】:2016-10-05 08:29:12
【问题描述】:

大家好,实际上我正在使用谷歌云平台,并且我将我的优惠券图像存储在 gcs 存储桶中。现在谷歌是否提供任何 api 来从 gcs 存储桶中删除现有图像。我在其文档google docs 上进行了很多搜索,也看过很多博客,但每个人所做的都是从数据库中删除数据,但没有人告诉我如何从存储桶中删除图像。如果有人这样做,请帮助我,这将是非常可观的。

谢谢

【问题讨论】:

    标签: google-app-engine google-cloud-storage


    【解决方案1】:

    当然。

    1. 您可以通过控制台以this 的方式使用gsutil 命令。你只需要install gsutil 命令。
    2. 通过 api rest 你可以使用this 服务。你可以试试这个apihere
    3. 还有pythonjavaother languajes 的库。
    4. 来自@MikeSchwartz 的建议。使用云控制台,您可以手动管理您的对象。 Link

    更新 2:NodeJS 上的示例

    我们可以在三个选项之间进行选择。 Using request moduleGoogle cloud NodeJS clientGoogle API NodeJS client。但首先,您应该授权您的服务器向 Google Cloud Storage (GCS) 发出请求。为此:

    • 打开Console Credentials page
    • 如果尚未选择,请选择您要为其创建凭据的项目。
    • 点击创建凭据​并选择服务帐户密钥
    • 在下拉列表中选择 Compute Engine 默认服务帐户。然后点击创建。将下载一个 Json 文件。
    • 在左侧面板中单击概览,然后在查找器中输入云存储。
    • 点击 Google Cloud Storage 并确保此 api 已启用
    • 将下载的 json 重命名为 keyfile.json 并将其放在 NodeJS 代码的可访问路径中。
    1. 谷歌云 NodeJS 客户端。 Here 有大量示例的官方仓库。

      var fs = require('fs'); var gcloud = require('gcloud');

      var gcs = gcloud.storage({ projectId: '你的项目', keyFilename: '/path/to/keyfile.json' }); var bucket = gcs.bucket('你的桶'); var file = bucket.file('你的文件'); file.delete(function(err, apiResponse) {}):

    2. 使用请求模块。

      npm 安装请求

    然后在你的代码中:

    var request = require('request');
    
    request({
      url: 'https://www.googleapis.com/storage/v1/b/your-bucket/o/your-file',
      qs: {key: 'your-private-key'}, // you can find your private-key in your keyfile.json
      method: 'DELETE'
    }, function(error, response, body){});
    
    1. 使用谷歌API NodeJS:我不知道怎么用,但是有很多例子here

    【讨论】:

    • 第三个选项是使用云存储浏览器 (pantheon.corp.google.com/storage/browser)
    • @MikeSchwartz 是的!。警告您放置了自己的存储 url。
    • 对不起,如果你弄错了,但实际上我想在我用 nodejs 编写的代码中调用 api。你能告诉我我该怎么做吗??
    • 你能告诉我如何在javascript中做到这一点,因为提到了java示例?我也知道存储桶名称和要删除的图片名称??
    • @PrakashKumar 您可以选择选项 2。在您的代码中使用 http 请求。 Docs here。回家后我可以写一个例子。
    【解决方案2】:

    假设你有你的图片文件公共 url,你可以这样做

        import {Storage} from "@google-cloud/storage";
         const storage = new Storage({
            projectId: GCLOUD_PROJECT,
            keyFilename: 'keyfile.json'
       });
    
       const bucket = storage.bucket(GCLOUD_BUCKET);
       //var image_file="https://storage.googleapis.com/{bucketname}/parentfolder/childfolder/filename
    
    var image_file="https://storage.googleapis.com/1533406597315/5be45c0b8c4ccd001b3567e9/1542186701528/depositphotos_173658708-stock-photo-hotel-room.jpg";
    
        new Promise((resolve, reject) => {
        var imageurl = image_file.split("/");
        imageurl = imageurl.slice(4, imageurl.length + 1).join("/");
    
        //imageurl=parentfolder/childfolder/filename
        storage
            .bucket(GCLOUD_BUCKET)
            .file(imageurl)
            .delete()
            .then((image) => {
                resolve(image)
            })
            .catch((e) => {
                reject(e)
            });
    
    });
    

    在此链接 https://cloud.google.com/storage/docs/deleting-objects 或 github https://github.com/googleapis/nodejs-storage/blob/master/samples/files.js 中的代码示例下查看 google 的官方文档

    【讨论】:

      猜你喜欢
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 2016-01-31
      • 2019-08-24
      • 2018-07-11
      • 1970-01-01
      相关资源
      最近更新 更多