Javascript 上传成功后生成下载URL
我已经成功地通过JS通过谷歌云存储将文件上传到Firebase的存储中!我注意到,与直接上传的文件不同,通过谷歌云上传的文件只有一个存储位置URL,而不是完整的URL,这意味着它无法读取!我想知道是否有办法在上传时为Firebase实际存储的“下载URL”部分生成完整URL 正在使用的代码:Javascript 上传成功后生成下载URL,javascript,firebase,google-cloud-storage,firebase-storage,Javascript,Firebase,Google Cloud Storage,Firebase Storage,我已经成功地通过JS通过谷歌云存储将文件上传到Firebase的存储中!我注意到,与直接上传的文件不同,通过谷歌云上传的文件只有一个存储位置URL,而不是完整的URL,这意味着它无法读取!我想知道是否有办法在上传时为Firebase实际存储的“下载URL”部分生成完整URL 正在使用的代码: var filename = image.substring(image.lastIndexOf("/") + 1).split("?")[0]; var gcs = gcloud.sto
var filename = image.substring(image.lastIndexOf("/") + 1).split("?")[0];
var gcs = gcloud.storage();
var bucket = gcs.bucket('bucket-name-here.appspot.com');
request(image).pipe(bucket.file('photos/' + filename).createWriteStream(
{metadata: {contentType: 'image/jpeg'}}))
.on('error', function(err) {})
.on('finish', function() {
console.log(imagealt);
});
您可以:
a) 通过firebase控制台创建下载url
b) 如果您试图通过编程方式从firebase客户端获取下载URL,则会动态为您创建一个。使用GCloud客户端时,您希望使用下载文件,如下所示:
bucket.file('photos/' + filename).getSignedUrl({
action: 'read',
expires: '03-17-2025'
}, function(err, url) {
if (err) {
console.error(err);
return;
}
// The file is now available to read from this URL.
request(url, function(err, resp) {
// resp.statusCode = 200
});
});
嘿,谢谢你!第一个只是创建一个令牌?它不是一个完整的URL:(第二个听起来不错,我该怎么做?第一个应该创建一个“完整的URL”创建一个令牌是实现这一点的原因。您看到什么表明它不是下载url而只是令牌?第二个令牌要求您使用firebase storage sdk。有关更多信息,请参阅。您好,谢谢您,Mike!我如何将其与createWriteStream相结合,或者它本身应该是一个代码?在('finish',function()上的
中{/*拨打电话获取下载URL*/});
是一个很可能的地方,因为它在那时已正确上载。你是明星还是明星!非常感谢:)该链接仍然没有显示在Firebase的存储中,但它返回了一个工作的google云URL!这不是问题。该链接没有显示,因为它实际上创建了一个不同的URL——这些URL在一定时间后过期,所以它们略有不同。