在Firebase存储中使用函数for Firebase上传文件后,我想获取该文件的下载URL.
我有这个 :
...
return bucket
.upload(fromFilePath, {destination: toFilePath})
.then((err, file) => {
// Get the download url of file
});
Run Code Online (Sandbox Code Playgroud)
目标文件有很多参数.甚至一个名字mediaLink.但是,如果我尝试访问此链接,我会收到此错误:
匿名用户没有storage.objects.get访问对象...
有人可以告诉我如何获取公共下载Url?
谢谢
按照这个例子,我不断收到错误:
TypeError: firebase.storage is not a function
Run Code Online (Sandbox Code Playgroud)
从我的代码中的这一行:
var storageRef = firebase.storage().ref();
Run Code Online (Sandbox Code Playgroud)
(当我只是尝试从存储指南初始化存储时,从firebase的npm站点链接,我得到同样的错误.)
在我的Node.js项目中,我包括以下库:
const firebase = require('firebase');var admin = require('firebase-admin');const fs = require('fs');到目前为止,我已经成功地读取并写入了firebase数据库,创建了对数据库的引用var db = admin.database(),然后var ref = db.ref("/")......所以我知道我已经正确配置了Firebase和firebase-database.但是我卡上storage,并试图既admin.storage().ref()和firebase.storage().ref(),并firebase.storage().ref("/")用相同的错误消息.
我也尝试过:
var storage = firbase.storage();
var storageRef = storage.ref();
Run Code Online (Sandbox Code Playgroud)
和
const app = firebase.initializeApp(config);
var storage = app.storage();
Run Code Online (Sandbox Code Playgroud)
和ref()'s无效的论点()和"/"...但有相同的信息,但无济于事.
我正在使用:
如何在特定的存储桶目录(例如foo)中上传Google Cloud上的文件?
"use strict";
const gcloud = require("gcloud");
const PROJECT_ID = "<project-id>";
let storage = gcloud.storage({
projectId: PROJECT_ID,
keyFilename: 'auth.json'
});
let bucket = storage.bucket(`${PROJECT_ID}.appspot.com`)
bucket.upload("1.jpg", (err, file) => {
if (err) { return console.error(err); }
let publicUrl = `https://firebasestorage.googleapis.com/v0/b/${PROJECT_ID}.appspot.com/o/${file.metadata.name}?alt=media`;
console.log(publicUrl);
});
Run Code Online (Sandbox Code Playgroud)
我试过了:
bucket.file("foo/1.jpg").upload("1.jpg", ...)
Run Code Online (Sandbox Code Playgroud)
但那里没有upload方法.
我1.jpg该如何发送foo目录?
在Firebase中,在客户端,我做:
ref.child("foo").put(myFile);
Run Code Online (Sandbox Code Playgroud) 我看到了什么:
感想:
我目前在本地存储图像并将图像路径存储在Firebase实时数据库中.我想将图像存储在GCloud中(以降低成本).
题:
我应该如何修改我的当前代码以上传到GCLOUD?
当前代码:
var express = require("express");
var router = express.Router();
var flash = require("connect-flash");
var firebase = require("firebase");
var multer = require("multer");
var upload = multer({dest:"./public/images/uploads/", limits: {fileSize: 250000}}).single("image");
router.get("/", function(req, res, next){
if (firebase.auth().currentUser == null) {
global.page_name = "login";
res.render("users/login");
}
else {
global.page_name = "upload";
res.render("upload");
}
});
router.post("/", function(req, res, next){
upload(req,res, function (err) {
if (err) {
req.flash("error_msg", "File too large. Max Size: 250KB");
res.redirect("/upload");
return
} …Run Code Online (Sandbox Code Playgroud) 我想验证Firebase存储规则在自动Node.js测试中是否按预期工作。
可以使用Firebase Admin API或服务帐户访问Firebase存储桶,如使用Node.js将文件上传到Firebase存储中所述。
问题在于,使用Admin API或服务帐户会绕过存储规则。
由于Firebase Node.js API不包含firebase.storage功能,因此没有以给定的Firebase用户访问Firebase存储的明显方法。
简而言之,如何以给定的Firebase用户/ uid从Node.js访问Firebase存储?
我有一个Android应用程序和一个Web应用程序(托管在Firebase Hosting上).Android应用会生成数据并将其保存到Firebase实时数据库.Android应用和网络应用都可以查看数据.
从Firebase数据库生成PDF数据的最佳位置在哪里 - Android应用程序或Web应用程序(通过JavaScript,例如jsPDF)?它将保存在Firebase存储中.
我认为Android应用程序可以调用后端生成PDF,并且PDF的链接将被发送回Android应用程序.但Firebase是一种无服务器架构,因此最好的解决方案是在Android应用上创建PDF,然后将其上传到Firebase存储......?
pdf android firebase firebase-hosting firebase-realtime-database
String projName = settings.getProject(); String bucketName = settings.getBucket();
System.out.println("Creating bucket, projName: "+projName+", bucketName: "+bucketName) ;
try {
@SuppressWarnings("unused")
Bucket createdBucket = storage.buckets().insert(projName,
new Bucket().setName(bucketName).setLocation("US")
).execute();
} catch (GoogleJsonResponseException e) {
GoogleJsonError error = e.getDetails();
if (error.getCode() == HTTP_CONFLICT
&& error.getMessage().contains("You already own this bucket.")) {
System.out.println("already exists");
} else {
System.out.println("Exception in tryCreateBucket: "+e);
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
创建存储桶,projName:round-center-551,bucketName:1904mybucketfoo
tryCreateBucket中的异常:
com.google.api.client.googleapis.json.GoogleJsonResponseException:403 Forbidden
{"code":403,"errors":[{"domain":"global""location":"Authorization","locationType":"header","message":"指定项目的帐户已被禁用.","reason":"accountDisabled"}],"message":"已禁用指定项目的帐户." 已禁用指定项目的帐户.
我已经确认Google云端存储和Google Cloud Datastore API服务已启用.知道应该怎么做才能启用帐户?