# #node.js #google-cloud-storage
Вопрос:
Я пытаюсь загрузить изображение в свое хранилище firebase с помощью nodejs. Я использовал следующий код:
const bucketName = 'mybucket.appspot.com';
// The path to your file to upload
const filePath = 'C:/Users/username/OneDrive/Desktop/testfunctions/dogs.png';
// The new ID for your GCS file
const destFileName = 'your-new-file-name.png';
//function upload() {
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
async function uploadFile() {
await storage.bucket(bucketName).upload(filePath, {
destination: destFileName,
});
console.log(`${filePath} uploaded to ${bucketName}`);
}
uploadFile().catch(console.error);
Однако при загрузке в мое хранилище изображение не загружается, оно представляет собой бесконечную вращающуюся полосу или там нет ничего, кроме имени файла.
Любая помощь будет признательна.
Комментарии:
1. Вместо
async function uploadFile() {
этого попробуйтеconst uploadFile = async() => {
Ответ №1:
Я Сделал Этот Код Некоторое Время Назад, Когда Искал, Я Увидел, Что Никто Не Решил Вашу Проблему.
Этот Метод Сохранит Его В «Хранилище». Кроме Того, Создал Ссылку Для Него В «Базе Данных Firebase В Реальном Времени».
//Important Imports
var admin = require("firebase-admin");
var serviceAccount = require("./serviceAccountKey.json");
const { uuid } = require("uuidv4");
const fs = require("fs");
//This Is Important Line To Tell The Firebase URL STORAGE URL CONNECT IT TO SERVICE ACCOUNT ADMIN
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL:
"https://yourfirebase.europe-west1.firebasedatabase.app",
storageBucket: "gs://yourfirebasestorage.com",
});
// Get A Database Reference
const db = admin.database();
const ref = db.ref("Parent");
const usersRef = ref.child("Child");
uploadImageToFirebase("imageName", ".png");
//Upload Image To Firebase Function
function uploadImageToFirebase(imageName, imageFormat) {
var myBucketLink = "yourfirebasestoragewithoutgs.appspot.com";
// CHANGE: TO WERE YOU WANT THE ROOT TO BE
//const usersRef = ref.child("anotherPath");
var bucket = admin.storage().bucket();
var filename = "./" imageName imageFormat;
try {
if (fs.existsSync(filename)) {
var UUID = uuid();
async function uploadFile() {
const metadata = {
metadata: {
// This Line Is Very Important. It's To Create A Download Token.
firebaseStorageDownloadTokens: UUID,
},
contentType: "image/png",
cacheControl: "public, max-age=31536000",
};
// Uploads A Local File To The Bucket
await bucket.upload(filename, {
// Support For HTTP Requests Made With `Accept-Encoding: gzip`
gzip: true,
metadata: metadata,
});
console.log(`${filename} uploaded.`);
var HTTP_ImageLink =
"https://firebasestorage.googleapis.com/v0/b/"
myBucketLink
"/o/"
imageName
imageFormat
"?alt=mediaamp;token="
UUID;
console.log(HTTP_ImageLink);
usersRef.child("images").set({
link: HTTP_ImageLink,
});
}
uploadFile().catch(console.error);
} else {
console.log("Can't Upload");
}
} catch (err) {
console.log(err);
}
}
Комментарии:
1. будет ли ссылка на базу данных такой же для cloud firestore?