Firebase Web存储 - 上载文件而不指定其名称

Sah*_*lis 2 javascript firebase firebase-storage

我正在使用Firebase存储,一切都很棒.

如何在不指定名称的情况下上传文件?

因此,文件将获得Firebase的唯一名称,就像它们在存储中一样.

这是我现在使用的一个例子:

firebase.initializeApp(config);
var fileUpload = document.getElementById("uploadFile").files;
var storageRef = firebase.storage().ref(fileUpload[0].name);
var uploadTask = storageRef.put(fileUpload[0]);
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

firebase.initializeApp(config);
var fileUpload = document.getElementById("uploadFile").files;
var storageRef = firebase.storage().ref();
var uploadTask = storageRef.put(fileUpload[0]);
Run Code Online (Sandbox Code Playgroud)

感谢您提供的任何帮助.谢谢.

Fra*_*len 5

在Firebase存储中没有为您生成文件名的内置API.

但与Firebase数据库的功能类似,您可以轻松生成文件名客户端,在统计上保证其唯一性.

一种方法是生成UUID,例如使用guid()此答案中函数:

var storageRef = firebase.storage().ref(guid());
Run Code Online (Sandbox Code Playgroud)

请注意,您在这里丢失了文件扩展名,这就是Firebase Storage确定文件类型的方式.因此,您更有可能希望根据本地文件名确定文件名,然后使用之前的内容确定文件名,以使其唯一.

var storageRef = firebase.storage().ref(guid()+fileUpload[0].name);
Run Code Online (Sandbox Code Playgroud)

鉴于这种组合,只有前缀本地时间戳的机会很有可能是唯一的:

var storageRef = firebase.storage().ref(Date.now()+fileUpload[0].name);
Run Code Online (Sandbox Code Playgroud)