如何使用 Node.js 从谷歌云存储中获取文件链接?
要从 firebase 存储中获取文件的签名公共链接,我们需要对 Google 云存储中的文件的引用。由于我们在存储中只有该文件的路径,因此我们首先需要创建对该对象的引用,然后获取指向该文件的签名链接。
使用文件路径生成存储中文件的公共链接的步骤:
- 使用来自@google-cloud/storage 的存储对象的bucket() 和file() 方法获取对存储的引用。
- 在第一步中创建的引用对象上使用 getSignedUrl 方法为该文件生成签名的公共链接。
模块安装:使用以下命令安装模块:
npm install @google-cloud/storage
方法 getSignedUrl() 将配置对象作为输入任务,并返回一个 Promise,该 Promise 使用下载 URL 解析,或者如果获取失败(包括该对象不存在)则拒绝。
示例:文件名:index.js
Javascript
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
var bucketName = 'geeksforgeeks';
var fileName = 'gfg.png';
// Create a reference to the file to generate link
var fileRef = storage.bucket(bucketName).file(fileName);
fileRef.exists().then(function(data) {
console.log("File in database exists ");
});
const config = {
action: 'read',
// A timestamp when this link will expire
expires: '01-01-2026',
};
// Get the link to that file
fileRef.getSignedUrl(config, function(err, url) {
if (err) {
console.error(err);
return;
}
// The file is now available to
// read from this URL
console.log("Url is : " + url);
});
使用以下命令运行index.js文件:
node index.js
输出:
File in database exists
Url is : https://storage.googleapis.com/geeksforgeeks/gfg.png?X-Goog-Algorithm=[token]