![](/img/trans.png)
[英]How to create a folder inside another folder with uid included firebase storage
[英]How to create a folder in Firebase Storage?
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。
因此,為了模仿這種行為,我想出了以下內容:
因此,創建一個文件夾的示例:
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.