如何使用 NodeJs 客户端而不是存储对象获取 google 云存储的 public URL 列表
How to get list of public urls for google cloud storage with NodeJs client instead of storage object
当 运行 (new Storage()).bucket('my-bucket-name').getFiles()
时,我得到一个带有 this structure 的对象列表。所有项目都设置为 public,我宁愿不处理对象以“手动”(public)拼凑 public url,我想知道 NodeJs 客户端是否用于GCP 提供类似的服务。
除了 python.
,我找到了一个类似的 link here
谢谢!
如您发布的主题中所述,没有直接的方法可以通过 Google 现有的客户端库来执行此操作。有些对象允许您直接获取 URL,但并非所有对象都可以。
因此,在代码中拼接 URL 对您来说更安全。正如您提到的,以及 Google 文档中提到的 this document,您可以使用 URL 模式 http(s)://storage.googleapis.com/[bucket]/[object]
来快速构建 URL。
鉴于API的响应,可以通过
等小循环创建
function main(bucketName = 'my-bucket') {
// The ID of your GCS bucket
const bucketName = 'your-unique-bucket-name';
// The string for the URL
const url = 'https://storage.googleapis.com/';
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
async function listFiles() {
// Lists files in the bucket
const [files] = await storage.bucket(bucketName).getFiles();
console.log('URLs:');
files.forEach(file => {
console.log(url.concat(bucketName,'/',file.name));
});
}
listFiles().catch(console.error);
}
这改编自 GCPs GitHub
中用于列出文件的示例代码
当 运行 (new Storage()).bucket('my-bucket-name').getFiles()
时,我得到一个带有 this structure 的对象列表。所有项目都设置为 public,我宁愿不处理对象以“手动”(public)拼凑 public url,我想知道 NodeJs 客户端是否用于GCP 提供类似的服务。
除了 python.
,我找到了一个类似的 link here谢谢!
如您发布的主题中所述,没有直接的方法可以通过 Google 现有的客户端库来执行此操作。有些对象允许您直接获取 URL,但并非所有对象都可以。
因此,在代码中拼接 URL 对您来说更安全。正如您提到的,以及 Google 文档中提到的 this document,您可以使用 URL 模式 http(s)://storage.googleapis.com/[bucket]/[object]
来快速构建 URL。
鉴于API的响应,可以通过
等小循环创建function main(bucketName = 'my-bucket') {
// The ID of your GCS bucket
const bucketName = 'your-unique-bucket-name';
// The string for the URL
const url = 'https://storage.googleapis.com/';
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
async function listFiles() {
// Lists files in the bucket
const [files] = await storage.bucket(bucketName).getFiles();
console.log('URLs:');
files.forEach(file => {
console.log(url.concat(bucketName,'/',file.name));
});
}
listFiles().catch(console.error);
}
这改编自 GCPs GitHub
中用于列出文件的示例代码