【发布时间】:2020-08-12 19:46:27
【问题描述】:
嘿,伙计们,我遇到了与 firebase 相关的问题,所以问题是每当我两次上传同一张照片时,我都会收到一个错误,即之前的照片由于名称相同而无法获取(这是一个空白的 img 图标),所以我安装了生成唯一 ID 的库“uuidv4”,那么我如何放置和保存唯一 ID 而不是给定的图像名称
let uniqueId = uuidv4()
const uploadTask = storage.ref(`images/${image.name}`).put(image);
然后我就这样做了
let uniqueId = uuidv4()
const uploadTask = storage.ref(`images/${uniqueId}`).put(image);
但出现错误
"Firebase Storage: Invalid argument in put at index 0: Expected Blob or File.
上传功能(我下面有jsx,我没有在底部包含,所以不用担心右括号)
function ImageUpload({username}) {
const [image, setImage] = useState(null);
const [progress, setProgress] = useState(0);
const [caption, setCaption] = useState('');
const handleChange = (e) => {
if (e.target.files[0]) {
setImage(e.target.files[0]);
}
};
const handleUpload = () => {
let uniqueId = uuidv4()
const uploadTask = storage.ref(`images/${image.name}`).put(image);
uploadTask.on(
"state_changed",
(snapshot) => {
const progress = Math.round (
(snapshot.bytesTransferred / snapshot.totalBytes) * 100
);
setProgress(progress);
},
(error) => {
console.log(error);
alert(error.message);
},
() => {
storage
.ref("images")
.child(image.name)
.getDownloadURL()
.then(url => {
db.collection("posts").add({
timestamp: firebase.firestore.FieldValue.serverTimestamp(),
caption: caption,
imageUrl: url,
username: username
})
})
setProgress(0)
setCaption('')
setImage(null)
}
)
}
return(jsx)
}
【问题讨论】:
-
如果您查看它需要文件或 blob 的错误。您需要向我们展示“上传代码”以及您如何上传到存储以及该输入文件
-
@CyrusZei 当我输入 id 时,它适用于第一张图片,但是当我选择上传相同的图片时,它会给我错误,或者如果我选择另一个图片,它可以完美地工作
-
@CyrusZei我已经添加了代码,你可以再检查一下
标签: javascript reactjs firebase firebase-storage