标签: firebase-storage

如何从Firebase存储getDownloadURL获取URL

我正在努力获取Firebase存储桶中文件的"长期持久下载链接".我已将此权限更改为

service firebase.storage {
  match /b/project-xxx.appspot.com/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的javacode看起来像这样:

private String niceLink (String date){
    String link;
    // Points to the root reference
    StorageReference storageRef = FirebaseStorage.getInstance().getReference();
    StorageReference dateRef = storageRef.child("/" + date+ ".csv");
    link = dateRef.getDownloadUrl().toString();
    return link;
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到的uri链接看起来像 com.google.android.gms.tasks.zzh@xxx

问题1.我可以从此获得类似的下载链接:https://firebasestorage.googleapis.com/v0/b/project-xxxx.appspot.com/o/20-5-2016.csv?val = media&token = b5d45a7f-3ab7-4f9b-b661-3a2187adxxxx

当我尝试获取上面的链接时,我在返回之前更改了最后一行,如下所示:

private String niceLink (String date){
    String link;
    // Points to the root reference
    StorageReference storageRef = FirebaseStorage.getInstance().getReference();
    StorageReference dateRef = storageRef.child("/" …
Run Code Online (Sandbox Code Playgroud)

java android firebase firebase-storage

12
推荐指数
3
解决办法
2万
查看次数

从Firebase存储中删除包含内容的文件夹

我可以轻松删除子引用中的文件,但是如何从Firebase存储中删除整个文件夹?

let postRef = FIRStorage.storage().reference().child("posts/folderName")
    postRef.deleteWithCompletion { (error) in
        print(error)
    }
Run Code Online (Sandbox Code Playgroud)

错误文件不存在.有任何想法吗?

firebase swift firebase-storage

12
推荐指数
1
解决办法
9472
查看次数

了解Firebase存储令牌

我正在尝试了解令牌如何在Firebase存储中运行.

每当我的网络应用程序将图像上传到FS时,它都会向其公共网址添加一个令牌.问题是每当您将相同的图像文件上传到Web应用程序的另一部分时,您似乎没有获得另一个文件,而是已经上传的文件URL的不同令牌,因此呈现前一个403错误注册图像显示.

有办法解决这个问题吗?

例:

storageRef.put(picture.jpg);
uploadTask.snapshot.downloadURL 
// returns something like https://firebasestorage.googleapis.com/v0/b/<your-app>/o/picture.jpg?alt=media&token=09cb2927-4706-4e36-95ae-2515c68b0d6e
Run Code Online (Sandbox Code Playgroud)

那个url然后显示在img src中的某个地方.

<img src="https://firebasestorage.googleapis.com/v0/b/<your-app>/o/picture.jpg?alt=media&token=09cb2927-4706-4e36-95ae-2515c68b0d6e">
Run Code Online (Sandbox Code Playgroud)

如果用户重复该过程并在应用的另一部分上传相同的picture.jpg,而不是在Firebase存储中获取全新副本,则该文件将被以新标记结尾的URL覆盖; 说12345.

所以:

 <img src="https://...picture.jpg?alt=media&token=12345"> // New upload renders fine
 <img src="https://...picture.jpg?alt=media&token=09cb2927-4706..."> // But old upload breaks because of wrong url
Run Code Online (Sandbox Code Playgroud)

javascript firebase firebase-storage

12
推荐指数
2
解决办法
8047
查看次数

如何缩短网络错误上的Firebase存储下载重试周期

我有从Firebase存储下载文件的基本工作代码.

String key = "gs://.../test.jpg";
File file = new File(getCacheDir() + File.separator + "test.jpg");

FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference gsRef = storage.getReferenceFromUrl(key);

gsRef.getFile(file)
.addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>()
{
    @Override
    public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot)
    {
        Log.d("APP", "onSuccess");
    }
}).addOnFailureListener(new OnFailureListener()
{
    @Override
    public void onFailure(@NonNull Exception exception)
    {
        Log.d("APP", "onFailure: ", exception);
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,如果在设备未连接到Internet时执行上述代码,则onFailure最终触发事件前需要大约10分钟.在此期间,日志填满了重复的重试:

02-27 21:41:07.203 12954-13288/com.example.test E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.FirebaseException: An internal error has occurred. [ <<Network Error>> ]
02-27 21:41:08.244 12954-13288/com.example.test W/ExponenentialBackoff: network unavailable, sleeping.
02-27 …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-storage

12
推荐指数
1
解决办法
828
查看次数

Firebase存储getDownloadUrl的令牌有效性

当使用FirebaseStorage的getDownloadUrl时,我对url(&token =)中的"token"有疑问.

https://firebasestorage.googleapis.com/v0/b/someapplication.appspot.com/o/images%2Fsample.png?alt=media&token=123456

从文档中可以看出,它返回了一个"长期存在"的下载网址 https://firebase.google.com/docs/reference/js/firebase.storage.Reference#getDownloadURL

问题是,我将fireUrl保存在FirebaseDatabase中

-chatroom
  - c1
    - m1
      -message: "Sent a photo"
      -photoUrl: downloadUrl here
Run Code Online (Sandbox Code Playgroud)

根据我的理解,它不是终身令牌,所以在某个时间点,令牌将无效.因此,当我在ImageView中显示此URL时,它将不会加载图像.

Picasso.with(context)
  .load(downloadUrl)
  .into(imageView)
Run Code Online (Sandbox Code Playgroud)

我明白我可以在firebase中使用这样的东西来生成一个新的.

StorageReference sr = getReferenceFromUrl(downloadUrl)
//pseudo-code
sr.getDownloadUrl().addOnSuccessListener((Uri newUri) => {
  Picasso.with(context)
  .load(newUri)
  .into(imageView)
});
Run Code Online (Sandbox Code Playgroud)

但!此过程总是会在此过程中获得新的下载URL.

那么,令牌会持续多久?此外,如果它不是生命周期令牌,我们应该如何正确存储下载URL?

firebase firebase-storage

12
推荐指数
1
解决办法
2664
查看次数

Picasso无法在StorageReference的onSuccess方法中加载图像

在运行时onStart()方法上尝试Picasso时,它通常使用控制台的下载链接从Firebase加载图像.

但是当我尝试在StorageReference onSuccess方法中加载图像时,它就无法工作.

这个类正在扩展片段:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == GALLERY_IN && resultCode == Activity.RESULT_OK) {
        isGranted = true;
        String path = FireStorage.retUID() + "/";
        showIndProgress();
        Uri uri = data.getData();

        StorageReference childPathRef = FireStorage.storageRef.child(path + uri.getLastPathSegment());
        childPathRef.putFile(uri)
                .addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                        if(task.isSuccessful()) {
                            Picasso.with(mContext).load(task.getResult().getDownloadUrl())
                                    .into(profView);

                            Picasso.Builder build = new Picasso.Builder(mContext);
                            build.listener(new Picasso.Listener() {
                                @Override
                                public void onImageLoadFailed(Picasso picasso, Uri uri, Exception …
Run Code Online (Sandbox Code Playgroud)

java android firebase picasso firebase-storage

12
推荐指数
2
解决办法
955
查看次数

未捕获错误:Firebase选项中未定义存储存储桶.(WEB)

我试图在firebase存储上传文件(图像).但它控制了一个错误,说"未捕获的错误:Firebase选项中没有定义存储桶"..这是我的代码

const fileUpBtn = document.getElementById('photoUpload');
const selectFile = document.getElementById('selectedFile');
const postIt = document.getElementById('postIt');

fileUpBtn.addEventListener('click',function(){
selectFile.click();
}
);
selectFile.addEventListener('change',function(e){

var file=e.target.files[0];
var filename = file.name;
console.log('/postPic/'+filename);
var storeLocation = storage.ref('/postPic/'+filename);
var uploadTask=storeLocation.put(file);  
});
Run Code Online (Sandbox Code Playgroud)

我尝试允许任何用户存储,但这种情况也控制了这个错误.

在此输入图像描述

javascript firebase firebase-storage

12
推荐指数
1
解决办法
9073
查看次数

Firebase成功上传到firebase存储后获取下载URL

我正在尝试将单个图像上传到Firebase存储,然后获取其下载URL并将其分配给变量.

我可以成功将我的图像上传到firebase,但是我无法检索下载网址.这是我已经尝试过的.

upload() {
    let storageRef = firebase.storage().ref();
    let success = false;

    for (let selectedFile of [(<HTMLInputElement>document.getElementById('file')).files[0]]) {
      let router = this.router;
      let af = this.af;
      let folder = this.folder;
      let path = `/${this.folder}/${selectedFile.name}`;
      var iRef = storageRef.child(path);
      iRef.put(selectedFile).then((snapshot) => {
        console.log('Uploaded a blob or file! Now storing the reference at', `/${this.folder}/images/`);
        af.list(`/${folder}/images/`).push({ path: path, filename: selectedFile.name })
      });
    }

    // This part does not work
    iRef.getDownloadURL().then((url) => {this.image = url});
    console.log('IREF IS ' + iRef)
    console.log('IMAGEURL IS ' + …
Run Code Online (Sandbox Code Playgroud)

javascript firebase firebase-realtime-database firebase-storage angular

12
推荐指数
4
解决办法
9480
查看次数

不建议使用taskSnapshot.getDownloadUrl()

到目前为止,从Firebase中的存储文件获取url的方法,我曾经这样做 taskSnapshot.getDownloadUrl,但现在已经弃用了,我应该使用哪种方法?

在此输入图像描述

android firebase firebase-storage

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

使用 Firebase 存储时未定义类 StorageReference

我正在尝试上传图片,同样的过程适用于我的其他应用程序,但在这里它给出了这些错误,你们能帮忙吗?

Future getImage1() async {
    // ignore: deprecated_member_use
    var firstImage = await ImagePicker.pickImage(
        source: ImageSource.gallery, imageQuality: 65);
    setState(() {
      _image1 = firstImage;
    });
  }

Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

dart firebase flutter firebase-storage

12
推荐指数
2
解决办法
8874
查看次数