Pie*_*ier 15 javascript firebase firebase-storage firebase-console
因此,新的Firebase支持使用Google Cloud Platform进行存储.
您可以images
使用以下命令将文件上传到文件夹:
var uploadTask = storageRef.child('images').put(file, metadata);
Run Code Online (Sandbox Code Playgroud)
如果要images/user1234
使用代码动态创建子文件夹,该怎么办?
官方样本没有显示如何执行此操作,也没有显示官方指南或参考文档.
Firebase控制台是唯一可以手动创建文件夹的位置吗?
Mik*_*ald 22
Firebase存储API动态创建"文件夹"作为中间产品:如果您创建文件images/user1234/file.txt
,将在此过程中创建所有中间"文件夹",如"images"和"user1234".所以你的代码变成:
var uploadTask = storageRef.child('images/user1234/file.txt').put(file, metadata);
Run Code Online (Sandbox Code Playgroud)
请注意,您需要foo.txt
在child()
调用中包含文件名(例如),因为引用应包括完整路径以及文件名,否则将调用您的文件images
.
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, '')
}
Run Code Online (Sandbox Code Playgroud)
以及列出文件的示例:
async function loadLists (ref: StorageReference) {
const { prefixes, items } = await listAll(ref)
return {
directories: prefixes,
files: items.filter(file => file.name !=== '.ghostfile')
}
}
Run Code Online (Sandbox Code Playgroud)
您肯定可以创建目录......稍微使用参考我做了以下。
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"))
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13257 次 |
最近记录: |