使用自定义名称属性在 Firebase 中存储视频 blob,returns 未定义
Storing a Video blob in Firebase with custom Name attribute, returns Undefined
问题是我的所有 Collections 文档都引用同一个 blob 文件,因为每次上传都会替换现有的存储 blob。
我想我需要为 Blob 分配一个名称,以便在每次上传时存储一个新条目。
尝试使用 Math.random() 分配名称,但没有成功。建议?
import { useParams, useHistory } from "react-router-dom";
const { productID } = useParams();
async function handleSubmitUpload() {
if (recordedChunks.length) {
const promises = [];
const blob = new Blob(recordedChunks, {Name: Math.random()}, {type: "video/webm"});
const reviewRef = await storage().ref(`prodReviews/${blob.Name}`)
const uploadTask = await storage().ref(`prodReviews/${blob.Name}`).put(blob);
await promises.push(uploadTask);
const videoUrl = await reviewRef.getDownloadURL();
const timestamp = new Date();
await firestore
.collection("products")
.doc(productID)
.collection("productReviewClips")
.add({videoUrl, userID: auth.currentUser.uid, createdDate: timestamp })
history.push(`/product/${productID}`);
setRecordedChunks([]);
}
}
Blob() constructor seems to take only 2 parameters but you are passing 3. You can use either Firestore SDK or UUID 生成随机 ID 并将其用作文件名,如下所示:
const blob = new Blob(recordedChunks, {type: "video/webm"});
// Get a random ID
const randomId = firestore.collection("test").doc().id
// Upload to Firebase Storage
const reviewRef = await storage().ref(`prodReviews/${randomId}`)
问题是我的所有 Collections 文档都引用同一个 blob 文件,因为每次上传都会替换现有的存储 blob。
我想我需要为 Blob 分配一个名称,以便在每次上传时存储一个新条目。
尝试使用 Math.random() 分配名称,但没有成功。建议?
import { useParams, useHistory } from "react-router-dom";
const { productID } = useParams();
async function handleSubmitUpload() {
if (recordedChunks.length) {
const promises = [];
const blob = new Blob(recordedChunks, {Name: Math.random()}, {type: "video/webm"});
const reviewRef = await storage().ref(`prodReviews/${blob.Name}`)
const uploadTask = await storage().ref(`prodReviews/${blob.Name}`).put(blob);
await promises.push(uploadTask);
const videoUrl = await reviewRef.getDownloadURL();
const timestamp = new Date();
await firestore
.collection("products")
.doc(productID)
.collection("productReviewClips")
.add({videoUrl, userID: auth.currentUser.uid, createdDate: timestamp })
history.push(`/product/${productID}`);
setRecordedChunks([]);
}
}
Blob() constructor seems to take only 2 parameters but you are passing 3. You can use either Firestore SDK or UUID 生成随机 ID 并将其用作文件名,如下所示:
const blob = new Blob(recordedChunks, {type: "video/webm"});
// Get a random ID
const randomId = firestore.collection("test").doc().id
// Upload to Firebase Storage
const reviewRef = await storage().ref(`prodReviews/${randomId}`)