当尝试获取刚刚上传到存储的图像的 downloadURL 时,我不断收到“XMLHttpRequest 未定义”消息。对这里发生的事情有什么想法吗?我可以检索元数据,但图像 url 未在方案中列出:/
节点:
import firebase, { storage } from './firebase';
const serviceAccount = require('./serviceAccountKey.json');
const admin = require('firebase-admin');
const app = express()
const dbUrl = "https://authentication.firebaseio.com"
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: dbUrl,
storageBucket: 'authentication.appspot.com'
});
//Initalize bucket
const bucket = admin.storage().bucket();
......
bucket.upload(imageUrl).then(result => {
const file = result[0];
return file.getMetadata();
}).then(results => {
const ref = storage.ref('users/' + userRecord.uid + '/image').downloadURL();
console.log(ref)
//const metadata = results[0];
//console.log('metadata=', metadata.mediaLink);
//firebase.database().ref('users/' + userRecord.uid + '/image').set(metadata.mediaLink);
}).catch(error => { …Run Code Online (Sandbox Code Playgroud) node.js firebase firebase-realtime-database firebase-storage
使用 Firebase Storage 存储图像时,图像的 URL 如下所示: https ]?alt=media&token=[令牌]
我想得到这个网址。
根据this、this、this和this,我需要使用该.getDownloadURL()方法,该方法位于“存储引用”..但可用对象的文档与实际对象不符。
当我尝试访问.getDownloadURL()下面代码中文档建议的对象上的方法时,我收到了各种未找到属性的错误。
const admin = require('firebase-admin');
admin.initializeApp();
admin
.storage()
.bucket()
.upload(imageToBeUploaded.filepath, {
destination: storageFolder,
resumable: false,
metadata: {
metadata: {
contentType: imageToBeUploaded.mimetype
}
}
})
.then((taskSnapshot) => {
// HOW DO I GET THE DOWNLOADABLE URL
})
Run Code Online (Sandbox Code Playgroud)
我试过以下:
taskSnapshot[1].getDownloadURL(),
admin.storage().ref(storageFolder+'/'+imageFileName).getDownloadURL(),
admin.storageRef(storageFolder+'/'+imageFileName).getDownloadURL(),
admin.storage().ref().child(storageFolder+'/'+imageFileName).getDownloadURL(),
.. 和一堆其他人。
反复试验没有找到具有该方法的“storageRef”,
firebase google-cloud-functions firebase-storage firebase-admin
我已将图像上传到 Cloud Storage ,但在显示图像时遇到问题。在存储概述中,我收到加载预览时出错。
\n\n当我将图像链接添加到 Cloud Firestore 中的对象时,我还没有完成这一步,但我不确定这是否只是由于文件类型(HEIC,但图像/jpeg)所致,或者是否有其他原因我的代码有问题:
\n\n存储概述:
\n\n\n\n图片(点击时):
\n\n显示问号。
\n\n\n\n图像响应(react-native-image-picker):
\n\n {height: 3024, origURL: "assets-library://asset/asset.HEIC?id=CC95F08C-88C3-4012-9D6D-64A413D254B3&ext=HEIC", fileName: null, data: "/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAA\xe2\x80\xa6c4z+P04wa+twuG5Yq628/OR1QqSdtLLqrrTe32L79l63P/9k=", width: 4032, \xe2\x80\xa6}\nheight: 3024\norigURL: "assets-library://asset/asset.HEIC?id=CC95F08C-88C3-4012-9D6D-64A413D254B3&ext=HEIC"\nfileName: null\ndata: "/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAA"\nwidth: 4032\ntype: "image/jpeg"\nfileSize: 13712705\nisVertical: false\nuri: "file:///Users/jefflewis/Library/Developer/CoreSimulator/Devices/6B2E3DBA-217F-46B5-AAF2-C1AA540B408E/data/Containers/Data/Application/4CD01B23-6649-4222-BF0E-CB5959732A3E/Documents/images/BECF69B3-9AFF-4CBB-9648-331EF623271C.jpg"\n__proto__: Object\nRun Code Online (Sandbox Code Playgroud)\n\n代码:
\n\n// Image URI\nconst imageURI = action.newRecipe.image.uri;\n\n// Image Type\nconst imageType = action.newRecipe.image.type;\n\n// Image Blob\nconst blob = new Blob([imageURI], {type : `${imageType}`});\nconsole.log(\'Adding Blob\');\nconsole.log(blob.data);\n\n// Firebase Cloud Storage File Path Ref (UUID Generates Randomized File Name)\nconst filePathRef = imagesRef.child(uuidv4());\n\n// Metadata\nconst …Run Code Online (Sandbox Code Playgroud) google-cloud-storage firebase firebase-storage google-cloud-firestore
我想从可调用的 https 云函数将图像上传到 Firebase Storage,但我不知道该怎么做。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const storageBucket = admin.storage().bucket('gs://xxxxx.appspot.com');
exports.test_upload = functions.https.onRequest(async (request, response) => {
var base64Img = "data:image/jpeg;base64,/9j/4AAQSkZJRg...AoNDQoIC";
let filename = new Date().getTime() + '.jpg';
await storageRef.child('/destination/'+filename).putString(base64Img, 'data_url').then(function(snapshot) {
snapshot.ref.getDownloadURL().then(async (url) => {
console.log(url);
});
});
response.status(200).send("Done!");
});
Run Code Online (Sandbox Code Playgroud)
你能帮我理解,该怎么做吗?
太感谢了
更新:2020/07/22
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const storageBucket = admin.storage().bucket('perfume-group.appspot');
const {Storage} = require('@google-cloud/storage');
const storage = new Storage({keyFilename: 'perfume-group-key.json'});
exports.test_upload = functions.https.onRequest(async (request, response) …Run Code Online (Sandbox Code Playgroud) node.js google-cloud-storage firebase google-cloud-functions
我使用Firebase云功能为QR文件上传编写了以下代码
const functions = require('firebase-functions');
const qrcode = require('qrcode')
const admin = require('firebase-admin');
const spawn = require('child-process-promise').spawn;
const serviceAccount = require("./secret.json");
const gcs = require('@google-cloud/storage')();
admin.initializeApp(functions.config({
credential: admin.credential.cert(serviceAccount),
storageBucket: "https://SECRET.firebaseio.com"
}));
exports.qrcode = functions.https.onRequest((req, res) => {
const storage = admin.storage().bucket();
const dummyFile = storage.file('dummy.png')
new Promise ((resolve, reject) => qrcode.toFileStream(
dummyFile.createWriteStream()
.on('finish', resolve)
.on('error', reject),
'DummyQR'))
.then(console.log("success")) //Doing stuff here later
.catch(console.log)
res.send("<script>window.close();</script>")
});
Run Code Online (Sandbox Code Playgroud)
根据文档,我应该能够通过简单地调用admin.storage().bucket();(https://firebase.google.com/docs/storage/admin/start)连接到存储桶,但是出现以下错误:
Error: Error occurred while parsing your function triggers.
Error: Bucket …Run Code Online (Sandbox Code Playgroud) google-cloud-storage firebase google-cloud-functions firebase-admin