我试图在我的网络应用中显示从我的电脑中选择的图像。我提到了以下问题,该问题解决了我试图解决的问题。
How to display selected image without sending data to server?
我有像这样的HTML部分
<div className="add_grp_image_div margin_bottom">
<img src={img_upload} className="add_grp_image"/>
<input type="file" className="filetype" id="group_image"/>
<span className="small_font to_middle">Add group image</span>
<img id="target"/>
</div>
我想在
中显示所选图像<img id="target"/>
我该怎么做?
我也提到了FileReader
个文档。
答案 0 :(得分:20)
试试这个
<input type="file" onChange={this.onImageChange} className="filetype" id="group_image"/>
将方法添加到类
onImageChange = (event) => {
if (event.target.files && event.target.files[0]) {
let reader = new FileReader();
reader.onload = (e) => {
this.setState({image: e.target.result});
};
reader.readAsDataURL(event.target.files[0]);
}
}
或者您可以使用URL.createObjectURL
onImageChange = (event) => {
if (event.target.files && event.target.files[0]) {
this.setState({
image: URL.createObjectURL(event.target.files[0])
});
}
}
并显示图像
<img id="target" src={this.state.image}/>
答案 1 :(得分:0)
希望它对您有用
dict
onImageChange
<form onSubmit={form => submitForm(form)}>
<input
accept="image/*"
onChange={onImageChange}
className={classes.inputImage}
id="contained-button-file"
multiple
name="image"
type="file"
/>
<label htmlFor="contained-button-file">
<IconButton component="span">
<Avatar
src={mydata.imagePreview}
style={{
margin: "10px",
width: "200px",
height: "200px"
}}
/>
</IconButton>
</label>
<Button
type="submit"
variant="outlined"
className={classes.button}
>
Default
</Button>
</form>
submitForm
const onImageChange = event => {
if (event.target.files && event.target.files[0]) {
let reader = new FileReader();
let file = event.target.files[0];
reader.onloadend = () => {
setData({
...mydata,
imagePreview: reader.result,
file: file
});
};
reader.readAsDataURL(file);
}
};
答案 2 :(得分:0)
最近,我遇到了需要类似功能的情况。这是我使用hooks
的实现。
export default function App() {
const [image, setImage] = React.useState("");
const imageRef = React.useRef(null);
function useDisplayImage() {
const [result, setResult] = React.useState("");
function uploader(e) {
const imageFile = e.target.files[0];
const reader = new FileReader();
reader.addEventListener("load", (e) => {
setResult(e.target.result);
});
reader.readAsDataURL(imageFile);
}
return { result, uploader };
}
const { result, uploader } = useDisplayImage();
return (
<div className="App">
<input
type="file"
onChange={(e) => {
setImage(e.target.files[0]);
uploader(e);
}}
/>
{result && <img ref={imageRef} src={result} alt="" />}
</div>
);
}
我创建了一个自定义hook
,以便可以在应用程序中的任何地方重用它。 hook
返回图像src
和uploader
function
。
然后可以将图像src
链接到<img src={..} />
,然后在input
进行更改时,只需将e
传递到uploader
function