Firebase 使用唯一/随机名称存储文件

Firebase 使用唯一/随机名称存储文件,firebase,firebase-storage,Firebase,Firebase Storage,使用新的Firebase API,您可以从客户端代码将文件上载到云存储中。在上载过程中,假定文件名是已知的或静态的: //创建根引用 var storageRef=firebase.storage().ref(); //创建对“mountains.jpg”的引用 var mountainsRef=storageRef.child('mountains.jpg'); //创建对“images/mountains.jpg”的引用 var mountainImagesRef=storageRef.ch

使用新的Firebase API,您可以从客户端代码将文件上载到云存储中。在上载过程中,假定文件名是已知的或静态的:

//创建根引用
var storageRef=firebase.storage().ref();
//创建对“mountains.jpg”的引用
var mountainsRef=storageRef.child('mountains.jpg');
//创建对“images/mountains.jpg”的引用
var mountainImagesRef=storageRef.child('images/mountains.jpg');

//文件或Blob,假设该文件名为rivers.jpg
var文件=。。。
//将文件上载到路径“images/rivers.jpg”
//我们可以使用文件API上的“name”属性来获取文件名
var uploadTask=storageRef.child('images/'+file.name).put(file);

随着用户上传自己的文件,名称冲突将成为一个问题。如何让Firebase创建文件名而不是自己定义文件名?数据库中是否有类似于创建唯一存储引用的
push()
功能?

Firebase storage Product Manager:

TL;DR:使用UUID生成器(在Android()和iOS()中内置,在JS中可以使用如下内容:),然后附加文件扩展名(在“.”上拆分file.name并获取最后一段)

我们不知道开发者会想要哪个版本的独特文件(见下文),因为有很多很多这样的用例,所以我们决定让开发者自己选择

images/uuid/image.png   // option 1: clean name, under a UUID "folder"
image/uuid.png          // option 2: unique name, same extension
images/uuid             // option 3: no extension

在我看来,在我们的文档中解释这一点是合理的,因此我将在内部提交一个bug来记录它:)

首先安装uuid-
npm I uuid

然后像这样定义文件引用

import { v4 as uuidv4 } from "uuid";

const fileRef = storageRef.child(
            `${uuidv4()}-${Put your file or image name here}`
          );
之后,使用
fileRef


fileRef.put(您的文件)

firebase的web版有什么方法可以做到这一点吗?一切都很好——我们感谢您的反馈,帮助我们改进产品。不是说你的输入无效/这些解决方案是最好的,只是希望它们能满足大多数开发人员的需求,让产品使用起来简单有趣:)我被uuid文档弄糊涂了。如果生成“基于时间”的uuid,如果同时生成,那么如何防止两个用户的uuid发生冲突?如果生成“随机”uuid,那么两个uuid发生冲突的可能性不是很小吗?基于时间,我不确定,但随机uuid可能会发生冲突,但这种可能性非常小,几乎不可能。用户ID+文件增量+现在日期+数学随机子字符串2