问题描述
我有存储位置(如 gs://xxxxxx.appspot.com/43B92kgk7nRtN9uaIGpCAMFF3mr1/2020-12-24 13:18:59.670092.jpg )并想通过管理 SDK 从我的 Spring Boot 应用程序中删除该对象。
在所有文档中,他们谈到 blob Id 、bucket name 和 ...(我没有这些信息),试图通过存储位置 uri 找到这些信息,但没有成功。
我想知道使用存储位置 uri 从存储中删除最简单的解决方案是什么
解决方法
如果您使用 Node.js,Firebase Admin SDK 中的存储模块只会为您自动初始化常规 Node.js SDK for Cloud Storage。因此,您可以使用其 example of deleting a file:
中显示的方法// Deletes the file from the bucket
await storage.bucket(bucketName).file(filename).delete();
console.log(`gs://${bucketName}/${filename} deleted.`);
您可能需要从您拥有的位置去除 gs://xxxxxx.appspot.com/
,因为 Admin SDK 已经为您设置了存储桶名称。
这是我通过反复试验找到的解决方案,通过测试不同的存储桶名称、bolb 名称和 blob id。 (bucket name,blob name 或 blob Id 在大多数文档中并不明显)
我使用“xxxxxx.appspot.com”作为存储桶名称,使用“43B92kgk7nRtN9uaIGpCAMFF3mr1/2020-12-24 13:18:59.670092.jpg”作为blob名称,并使用以下代码将其从存储中删除
Bucket bucket = StorageClient.getInstance().bucket("timeline-10.appspot.com");
boolean result = bucket.get("43B92kgk7nRtN9uaIGpCAMFF3mr1/2020-12-24 13:18:59.670092.jpg").delete();