Пустое изображение на ведре.загрузка

# #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?