javascript 如何在Firebase Storage中创建文件夹?

eivgtgni  于 2023-09-29  发布在  Java
关注(0)|答案(6)|浏览(99)

因此,新的Firebase支持使用Google Cloud Platform进行存储。
您可以使用以下命令将文件上载到images文件夹:

var uploadTask = storageRef.child('images').put(file, metadata);

如果您想使用代码动态创建一个子文件夹images/user1234,该怎么办?
官方的sample没有说明如何做到这一点,也没有官方指南或reference docs
Firebase控制台是唯一可以手动创建文件夹的地方吗?

nbewdwxp

nbewdwxp1#

Firebase Storage API动态创建“文件夹”作为中间产品:如果你在images/user1234/file.txt上创建一个文件,所有的中间文件夹,比如“images”和“user1234”都会被创建。所以你的代码变成:

var uploadTask = storageRef.child('images/user1234/file.txt').put(file, metadata);

请注意,您需要在child()调用中包括文件名(例如foo.txt),因为引用应该包括完整路径以及文件名,否则您的文件将被称为images

0pizxfdo

0pizxfdo2#

Firebase控制台允许您创建文件夹,因为这是将文件添加到特定文件夹的最简单方法。
但是没有公共API来创建文件夹。相反,文件夹是在您向其中添加文件时自动创建的。
Firebase Storage基于Google Cloud Storage。参见documentation provided by GCS about the illusion of folders

laik7k3q

laik7k3q3#

你当然可以创建目录…我做了以下的一些参考。

test = (e,v) => {
    let fileName = "filename"
    let newDirectory = "someDir"
    let storage = firebase.storage().ref(`images/${newDirectory}/${fileName}`)

    let file = e.target.files[0]
    if(file !== undefined && file.type === "image/png" ) {
        storage.put(file)
            .then( d => console.log('you did it'))
            .catch( d => console.log("do something"))
    }
}

mgdq6dx1

mgdq6dx14#

Firebase缺乏非常重要的功能,总是需要做一些技巧来模拟应该是标准的行为。

  • 如果您从Firebase控制台手动创建文件夹,即使其中没有更多文件,文件夹也会持续存在
  • 如果你创建一个文件夹动态和所有的文件被删除在某个时候,该文件夹将消失,并被删除。

我使用Firebase Storage实现了一个文件管理器,因此当用户想要上传文件时,他可以通过这个界面来完成,而不是像Firebase Console那样从应用程序外部的东西。你想给予用户选择重新组织文件,但是像创建一个新文件夹这样常见的事情没有技巧是做不到的,为什么?就因为这是Firebase
为了模仿这种行为,我想出了以下方法:
1.使用新文件夹名称创建引用。
1.创建一个“幽灵”文件的引用作为文件夹引用的子文件,并给予它始终相同的固定名称,例如。'.ghostfile'
1.将文件上载到这个新创建的文件夹。任何方法都是有效的,我只是使用uploadString。
1.每次我列出一个引用的文件时,排除任何命名为之前的文件。所以这个“幽灵”文件不会显示在文件管理器中。
下面是一个创建foler的例子:

async function createFolder (currentRef: StorageReference, folderName: string) {
        const newDir = ref(currentRef, name)
        const ghostFile = ref(newDir, '.ghostfile')
        await uploadString(ghostFile, '')
}

和一个例子来列出文件:

async function loadLists (ref: StorageReference) {
    const { prefixes, items } = await listAll(ref)
    return {
        directories: prefixes,
        files: items.filter(file => file.name !=== '.ghostfile')
    }
}
smdnsysy

smdnsysy5#

String myFolder = "MyImages";
StorageReference riversRef = storageReference.child(myFolder).child("images/pic.jpg");
kyxcudwk

kyxcudwk6#

Firebase控制台允许您创建文件夹。我不认为有其他方法来创建一个文件夹。

相关问题