簡體   English   中英

如何在 Firebase 存儲中創建文件夾?

[英]How to create a folder in Firebase Storage?

因此,新的 Firebase 支持使用 Google Cloud Platform 進行存儲。

您可以使用以下命令將文件上傳到images文件夾:

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

如果要使用代碼動態創建子文件夾images/user1234怎么辦?

官方示例未顯示如何執行此操作,也未顯示官方指南參考文檔

Firebase 控制台是唯一可以手動創建文件夾的地方嗎?

Firebase Storage API 動態創建“文件夾”作為中間產品:如果您在images/user1234/file.txt創建一個文件,所有中間“文件夾”(如“images”和“user1234”)都將在此過程中創建。 所以你的代碼變成:

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

請注意,您需要在child()調用中包含文件名(例如foo.txt child() ,因為引用應包含完整路徑和文件名,否則您的文件將被稱為images

Firebase 控制台確實允許您創建文件夾,因為這是將文件添加到特定文件夾的最簡單方法。

但是沒有創建文件夾的公共 API。 相反,文件夾是在您向其中添加文件時自動創建的。

您肯定可以創建目錄......稍微使用參考我做了以下。

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"))
    }
}

在此處輸入圖片說明

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

Firebase 控制台允許您創建文件夾。 我認為沒有其他方法可以創建文件夾。

Firebase 缺乏非常重要的功能,總是需要做一些技巧來模擬應該是標准的行為。

  • 如果您從 Firebase 控制台手動創建文件夾即使其中沒​​有更多文件,它也會保留

  • 如果您動態創建一個文件夾並且所有文件在某個時候被刪除,該文件夾將消失並被刪除。

我使用 Firebase Storage 實現了一個文件管理器,所以當用戶想要上傳文件時,他可以通過這個界面來完成,而不是像 Firebase 控制台那樣從應用程序外部的東西上傳。 您希望讓用戶可以選擇根據需要重新組織文件,但是像創建新文件夾這樣常見的事情如果沒有技巧就無法完成,為什么呢? 只是因為這是 Firebase。

因此,為了模仿這種行為,我想出了以下內容:

  1. 使用新文件夾名稱創建引用。
  2. 為“ghost”文件創建一個引用作為文件夾引用的子級,並為其指定一個標准名稱,例如。 '.ghostfile'
  3. 將文件上傳到這個新創建的文件夾。 任何方法都有效,我只使用uploadString
  4. 每次我列出參考文件時,排除任何以前命名的文件。 所以這個“幽靈”文件沒有顯示在文件管理器中。

因此,創建一個文件夾的示例:

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')
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM