使用新的Firebase API,您可以从客户端代码将文件上传到云存储。 examples假设文件名在上传期间已知或是静态的:
// Create a root reference
var storageRef = firebase.storage().ref();
// Create a reference to 'mountains.jpg'
var mountainsRef = storageRef.child('mountains.jpg');
// Create a reference to 'images/mountains.jpg'
var mountainImagesRef = storageRef.child('images/mountains.jpg');
或
// File or Blob, assume the file is called rivers.jpg
var file = ...
// Upload the file to the path 'images/rivers.jpg'
// We can use the 'name' property on the File API to get our file name
var uploadTask = storageRef.child('images/' + file.name).put(file);
如果用户上传自己的文件,名称冲突将成为一个问题。如何让Firebase创建文件名而不是自己定义?是否有类似于数据库中push()
功能的用于创建唯一存储引用的内容?
答案 0 :(得分:50)
Firebase存储产品经理:
TL; DR:使用内置的UUID生成器(在Android(UUID)和iOS(NSUUID)中,在JS中,您可以使用以下内容:Create GUID / UUID in JavaScript?) ,如果你想保留文件扩展名,请附加文件扩展名(将文件名分割为'。'并获取最后一段)
我们不知道开发人员想要哪个版本的独特文件(见下文),因为有很多很多用例,所以我们决定将选择留给开发人员。
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来记录它:)
答案 1 :(得分:0)
首先安装 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(Your file)