标签: firebase-storage

Firebase 存储工件巨大且不断增加

我刚刚注意到我的应用程序的存储空间在过去几周内几乎达到了 5GB 的免费使用限制。更详细地检查后,似乎这是由“工件”存储桶引起的。

我看到了这个 SO question,它说“工件”存储桶与 Node 10 环境有关。

我确实在一个月前搬到了 Node 10,但在发现日志不再在 Firestore 功能控制台中构建后,几天后我又恢复到 Node 8,从那时起只使用 Node 8。

但是我可以看到“工件”存储每周增加约 800Mb,这让我至少担心(请查看下面的屏幕截图)

我认为这与 Firestore 功能部署有关(或不是?),但这真的是预期的吗?我可以安全地清理这些工件吗?

对我来说,它在短短几周内急剧增加,这对我来说很奇怪,而以前我使用函数几年,从来没有遇到过这样的问题。

感谢有关如何在这种情况下安全处理存储大小并将其消耗保持在最低限度的任何建议。

我也在使用pubsub.schedule函数以防它在这里很重要。

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

我还注意到“神器”的带宽出乎意料地飙升,我猜这也有成本影响,我很感激任何有关尽量减少此类峰值的可能方法的意见(22.5GB 中约有 22GB 来自“神器”存储桶):

在此处输入图片说明

在此处输入图片说明

firebase google-cloud-functions firebase-storage

30
推荐指数
1
解决办法
3162
查看次数

存储具有唯一/随机名称的文件

使用新的Firebase API,您可以从客户端代码将文件上传到云存储.这些示例假定文件名在上载期间已知或是静态的:

// Create a root reference
var storageRef = firebase.storage().ref();

// Create a reference to 'mountains.jpg'
var mountainsRef = storageRef.child('mountains.jpg');

// Create a reference to 'images/mountains.jpg'
var mountainImagesRef = storageRef.child('images/mountains.jpg');
Run Code Online (Sandbox Code Playgroud)

要么

// File or Blob, assume the file is called rivers.jpg
var file = ...

// Upload the file to the path 'images/rivers.jpg'
// We can use the 'name' property on the File API to get our file name
var uploadTask = storageRef.child('images/' + file.name).put(file);
Run Code Online (Sandbox Code Playgroud)

用户上传自己的文件时,名称冲突将成为一个问题.如何让Firebase创建文件名而不是自己定义?是否有类似push() …

firebase firebase-storage

29
推荐指数
2
解决办法
1万
查看次数

Firebase 存储和 Cloud Firestore/实时数据库有什么区别?

我一直在使用 Google Firebase 的实时数据库,但希望能够存储更复杂的用户生成的数据,例如图像、视频等。根据 Firebase 文档,他们提供另外两种服务:“Firebase Storage”和“Cloud Firestore”。有人可以总结一下名称相似的“Storage”和“Firestore”之间的区别吗?

firebase firebase-storage google-cloud-firestore

24
推荐指数
1
解决办法
1万
查看次数

用户无权访问此对象.Firebase存储android

我是firebase存储的新手.就这样我可以学习它,我做了一个简单的应用程序,有一个按钮和一个ImageView.当我单击按钮时,图像(from drawable)将显示在ImageView上.我还编写了在Firebase上上传图像的代码,但是onAddFailureListener给出消息的异常消息User没有访问此对象的权限.我该怎么办 ?

package com.example.asad.save_photo;

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.net.Uri;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageMetadata;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import java.io.ByteArrayOutputStream;
import java.io.File;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FirebaseStorage storage = FirebaseStorage.getInstance();

        StorageReference storageRef = storage.getReferenceFromUrl("gs://savephoto-a1cc3.appspot.com");

        final StorageReference mountainsRef = storageRef.child("asad"); …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-storage

22
推荐指数
5
解决办法
3万
查看次数

Cloud Function 会影响 Firebase 存储带宽的使用吗?

我想弄清楚为什么 firebase 存储使用量远远超出我的预期 在此处输入图片说明

我的 Firebase 存储中只有几个照片文件,大约 75 张照片,每张照片 100kb。但是我存储的字节数和对象计数远远超出了我的预期,如上图所示。在这种情况下,也许我可以从此处的文档中找到答案

当您将函数的源代码部署到 Cloud Functions 时,该源代码存储在 Cloud Storage 存储分区中。然后,Cloud Build 会自动将您的代码构建到容器映像中,并将该映像推送到 Container Registry。当 Cloud Functions 需要运行容器来执行您的函数时,它会访问此映像。

构建图像的过程是完全自动的,不需要您的直接输入

可能是因为我创建了很多云函数。这就是为什么我的 Firebase 存储中存储的字节数和对象计数很大的原因

现在我需要知道为什么存储带宽在一个月内高达 20.2 GB。我仍在开发我的应用程序,用户就是我。我不认为我会在一个月内达到 20.2 GB,因为在我的 Android 应用程序中,我在显示图像时使用缓存。

我很怀疑,我的存储带宽使用率过高的原因是云功能。八月,我firebase deploy对我的云功能执行了很多操作。Cloud Function 会影响 Firebase 存储带宽的使用吗?

我在印度尼西亚,我的 Firebase Storage 和 Firestore 位于 asia-southeast2,但我的 Cloud Function 位于 asia-east2。我的云功能对我的 firestore 和存储中的图像执行一些操作。但我仍然认为它不会达到每月 20.2 GB

从上图可以看出,带宽使用分为 3 个不同的部分

  1. asia.artifacts.projectID.appspot.com
  2. gcf-sources-5900904-asia-east2
  3. projectID.appspot.com

asia.artifacts.projectID.appspot.com 似乎远远高于其他,它高达 4.3 GB

那是我的问题的一些信息。所以我需要知道,云功能部署/操作会影响我的 Firebase 存储带宽使用吗?

我需要了解为什么会发生这种情况,因为我担心如果很多用户使用我的应用程序会产生意外的成本。

firebase google-cloud-functions firebase-storage

22
推荐指数
1
解决办法
2126
查看次数

firebase存储 - 获取图像URL

我已经开始在后端使用firebase(Firebase for web)了.我可以很好地处理Firebase实时数据库,但我不清楚Firebase存储(图像,视频等)的工作原理.

基本上我想在我的网站上有一些新闻列表,每个项目都有一些小图片.所以我将这些图片上传到Firebase存储,但是如何访问他们的URL(我的<img/>src属性需要它)?

firebase firebase-storage

21
推荐指数
1
解决办法
6万
查看次数

使用AngularFire2访问firebase.storage()(Angular2 rc.5)


我试图在我的项目上访问firebase.storage(),用:

  • "@angular":"2.0.0-rc.5"
  • "angularfire2":"^ 2.0.0-beta.3-pre2"
  • "firebase":"^ 3.3.0"

我找到了这个解决方案,并创建了我的.component.ts文件:

import { Component } from '@angular/core';
declare var firebase : any;

@Component({
  template: '<img [src]="image">'
})
export class RecipesComponent {
  image: string;
  constructor() {
    const storageRef = firebase.storage().ref().child('images/image.png');
    storageRef.getDownloadURL().then(url => this.image = url);
  }
}
Run Code Online (Sandbox Code Playgroud)

我在浏览器控制台中收到以下错误:

EXCEPTION: Error: Uncaught (in promise): EXCEPTION: Error in ./bstorageComponent class FBStorageComponent_Host - inline template:0:0
ORIGINAL EXCEPTION: Error: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp().
ORIGINAL STACKTRACE:
Error: No Firebase App '[DEFAULT]' …
Run Code Online (Sandbox Code Playgroud)

firebase firebase-storage angularfire2 angular

20
推荐指数
2
解决办法
1万
查看次数

如何检查Firebase存储中是否存在文件?

使用数据库时,您可以snapshot.exists()检查是否存在某些数据.根据文档,没有类似的存储方法.

https://firebase.google.com/docs/reference/js/firebase.storage.Reference

检查Firebase存储中是否存在某个文件的正确方法是什么?

javascript firebase firebase-storage

19
推荐指数
4
解决办法
8238
查看次数

如何使用Firebase存储将"直接链接"存储到图像

我需要通过直接链接访问存储在Firebase存储上的图像,例如

http://myfirebasehost.com/storage/imgIwant.png
Run Code Online (Sandbox Code Playgroud)

据我所知,它只能使用协议的这种类型的URL gs://,但是,它不能通过链接访问,只能在SDK api中访问.

我需要一个完全如上所述的使用Firebase平台的解决方案,如果不可能,接受其他建议.

我的代码有常量,是指向图像的链接.事实证明,如果我想更新这张图片,我必须进行新的部署.相反,我想在同一个URL更新图像.使用firebase(据我所知)这是不可能的,因为Storage提供的URL不能通过链接访问.

另一种方法是将图像转换为Base64并存储在数据库中,但将是非常广泛的和不切实际的.

firebase firebase-storage

19
推荐指数
4
解决办法
1万
查看次数

如何从Firebase存储下载整个文件夹?

我想从Firebase存储中下载整个文件夹.单个文件可以通过如下获取DownloadURL来下载.但它对文件夹不起作用.

var storageRef = firebase.storage().ref();

  // Create a reference to the file we want to download
  var starsRef = storageRef.child(path);

  // Get the download URL
  starsRef.getDownloadURL().then(function(url) {
    // Insert url into an <img> tag to "download"
    ImageUrl = url;

    console.log(ImageUrl);
  }).catch(function(error) {
    switch (error.code) {
      case 'storage/object_not_found':
        // File doesn't exist
        break;

      case 'storage/unauthorized':
        // User doesn't have permission to access the object
        break;

      case 'storage/canceled':
        // User canceled the upload
        break;

      case 'storage/unknown':
        // Unknown error occurred, inspect the …
Run Code Online (Sandbox Code Playgroud)

javascript firebase firebase-storage

19
推荐指数
3
解决办法
1万
查看次数