reactjs - 如何从 React.js 中的 firebase 获取文件
问题描述
我有使用 React.js 将图片上传到 firebase 的功能,我使用put
方法将图像上传到 firebase,现在我需要从 firebase 下载该图片,你能帮我吗?我上传文件的代码是:
import React, { useState, useEffect } from 'react'
import { storage } from '../../firebase/firebase'
const Upload = () => {
const [photo, setPhoto] = useState(null)
const [url, setUrl] = useState(null)
const imageChangeHandler = (event) => {
setPhoto(event.target.files[0])
}
const fileUploadHandler = () => {
const uploadTask = storage.ref(`image/${photo.name}`).put(photo);
uploadTask.on(
'state-changed',
snapshot => { },
error => {
console.log(error);
},
() => {
storage.ref('image').child(photo.name).getDownloadURL()
.then(url => {
setUrl(url)
})
}
)
}
return (
<div className="upload-box">
<div className="form-upload">
<input onChange={imageChangeHandler} type="file" className="upload-input" />
<button onClick={fileUploadHandler} type="submit" value="Send" className="upload-btn">Upload</button>
<ul>
<li>
<img width="200px" height="200px" src={url} alt="firebase_uladed_image" />
</li>
</ul>
</div>
</div>
)
}
export default Upload
解决方案
您需要使用 useEffect 从 firebase 获取图像,如下所示
useEffect(()=>{
fetchApi
setImage()
}, [])
推荐阅读
- html - 如何将渐变颜色应用于 svg 路径
- excel - VBA 函数语法
- rhel8 - Redhat Codeready Container 无法启动(crc 启动错误):.crcbundle 未找到
- flutter - Flutter:应该初始化字段“initScreen”,因为它的类型“int”不允许为空。int 初始化屏幕;
- java - 如何使用嵌套循环打印乘法表?
- c# - 尝试从文本框中解析多行
- node.js - 如何修复我的删除按钮?Reactjs、MondogDB 和 Nodejs
- profiling - JFR ExecutionSample 与 ThreadDump
- c - 判断 OpenSSL 是否使用 CPU SHA256 指令
- shopify - Shopify 购物车/更新废弃的购物车