Вы можете использовать этот код прямо здесь
var admin = require("firebase-admin");
const uuid = require('uuid-v4');
// CHANGE: The path to your service account
var serviceAccount = require("path/to/serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
storageBucket: "<BUCKET_NAME>.appspot.com"
});
var bucket = admin.storage().bucket();
var filename = "path/to/image.png"
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.`);
}
uploadFile().catch(console.error);
Чтобы успешно запустить этот код, вам необходимо:
- Добавить Firebase Admin SDK на ваш сервер
- Установите uuid-v4
- Замените
"path/to/serviceAccountKey.json"
на путь к своей учетной записи службы. Здесь - руководство для получения вашего. - Замените
<BUCKET_NAME>
на имя вашего ведра по умолчанию. Вы можете найти это имя в разделе «Хранилище» вашей консоли Firebase . Имя корзины не должно содержать gs://
или любых других префиксов протокола. Например, если URL-адрес корзины, отображаемый в консоли Firebase, равен gs://bucket-name.appspot.com
, передайте строку bucket-name.appspot.com
в Admin SDK. - Замените
"path/to/image.png"
на путь к собственному изображению. - При необходимости измените
contentType
в metadata
соответственно.
Просто, чтобы вы знали, когда вы загружаете изображение с помощью Firebase Console, токен доступа будет автоматически сгенерирован. Однако, если вы загружаете изображение с помощью любого Admin SDK или gsutil, вам нужно будет вручную создать этот токен доступа самостоятельно. Вот почему очень важно, что uuid
part
Поддержка Firebase говорит, что это исправлено, но я думаю, что любой, имеющий эту проблему, должен go таким образом вместо ожидания Firebase чтобы исправить это.