Reputation: 541
In my react component I have :
state = {
title: '',
content: '',
file: ''
}
handleChange = (e) => {
this.setState({
[e.target.id] : e.target.value
})
}
handleSubmit = (e) => {
e.preventDefault();
console.log(this.state)
}
<form onSubmit={this.handleSubmit}>
<input type="text" id="title" onChange={this.handleChange}/>
<textarea id="content" onChange={this.handleChange}></textarea>
<input type="file" id="file" onChange={this.handleChange}/>
</form>
and i am getting in console.log(this.state)
only path to file
, like : "C:\fakepath\title.jpg"
.
How to set to state actual file?
Thanks for help in advance!
Upvotes: 0
Views: 6240
Reputation: 420
for read file from event you must be use e.target.files[0]
bellow code works fine for you
state = {
title: '',
content: '',
file: ''
}
handleChange = (e) => {
this.setState({
[e.target.id] : e.target.value
})
}
handleOnFileChange = (e) => {
let file = e.target.files[0];
this.setState({
[e.target.id] : file
})
}
handleSubmit = (e) => {
e.preventDefault();
console.log(this.state)
}
<form onSubmit={this.handleSubmit}>
<input type="text" id="title" onChange={this.handleOnFileChange}/>
<textarea id="content" onChange={this.handleChange}></textarea>
<input type="file" id="file" onChange={this.handleChange}/>
</form>
Upvotes: 1