Reactjs 输入上传不 return 本地 URL
Reactjs Input Upload doesn't return local URL
我在将图像上传到服务器之前尝试显示图像预览时遇到问题。我正在使用 reactjs。
我的问题是,当我尝试上传图像时,我得到了文件数据,但是当我使用 reader 时,它没有 return 本地 URL 并且只显示undefined
这是我试图关注的话题
但是当我尝试检查本地图像时 url 它 return undefined
这是我在文件中导入的内容:
import React, {Component} from "react";
import { MDBContainer, MDBRow, MDBCol, MDBBtn, MDBIcon, MDBInput, MDBDropdown, MDBDropdownToggle, MDBDropdownMenu, MDBDropdownItem } from 'mdbreact';
这是我的 js:
<p className="text-upload">Front Desain</p>
<input ref="file" type="file" name="front Design" onChange={this.frontDesign}/>
这是我的方法或功能:
frontDesign = (e) =>{
var file = this.refs.file.files[0];
var reader = new FileReader();
var url = reader.readAsDataURL(file);
reader.onloadend = function (e) {
this.setState({
form:{
frontDesign: [reader.result]
}
})
}.bind(this);
console.log("Check Data : ", file)
console.log("Check URL : ", url)
}
这是我的状态:
state ={
form:{
frontDesign: [],
}
}
这是我的控制台:
这是我的代码和框:
https://codesandbox.io/s/tender-mclaren-zb1l7?fontsize=14
有人可以帮我解决这个问题吗?
这里不需要使用ref。试试下面的代码
frontDesign = (e) => {
var file = e.target.files[0];
var reader = new FileReader();
reader.onload = (e) => {
//Image URL e.target.result
this.setState({
form:{
frontDesign: [e.target.result]
}
})
}
reader.readAsDataURL(file);
}
From the mozilla website 看来您需要向 reader 添加一个加载事件侦听器。部分IE版本不支持该示例代码
...
reader.addEventListener("load", () => {
this.setState(state => ({
...state,
form:{
frontDesign: [reader.result]
}
}))
const url = reader.result;
console.log(url);
}, false);
...
在这里工作 condeSanbox:https://codesandbox.io/s/affectionate-lamport-dnbij
我在将图像上传到服务器之前尝试显示图像预览时遇到问题。我正在使用 reactjs。
我的问题是,当我尝试上传图像时,我得到了文件数据,但是当我使用 reader 时,它没有 return 本地 URL 并且只显示undefined
这是我试图关注的话题
但是当我尝试检查本地图像时 url 它 return undefined
这是我在文件中导入的内容:
import React, {Component} from "react";
import { MDBContainer, MDBRow, MDBCol, MDBBtn, MDBIcon, MDBInput, MDBDropdown, MDBDropdownToggle, MDBDropdownMenu, MDBDropdownItem } from 'mdbreact';
这是我的 js:
<p className="text-upload">Front Desain</p>
<input ref="file" type="file" name="front Design" onChange={this.frontDesign}/>
这是我的方法或功能:
frontDesign = (e) =>{
var file = this.refs.file.files[0];
var reader = new FileReader();
var url = reader.readAsDataURL(file);
reader.onloadend = function (e) {
this.setState({
form:{
frontDesign: [reader.result]
}
})
}.bind(this);
console.log("Check Data : ", file)
console.log("Check URL : ", url)
}
这是我的状态:
state ={
form:{
frontDesign: [],
}
}
这是我的控制台:
这是我的代码和框:
https://codesandbox.io/s/tender-mclaren-zb1l7?fontsize=14
有人可以帮我解决这个问题吗?
这里不需要使用ref。试试下面的代码
frontDesign = (e) => {
var file = e.target.files[0];
var reader = new FileReader();
reader.onload = (e) => {
//Image URL e.target.result
this.setState({
form:{
frontDesign: [e.target.result]
}
})
}
reader.readAsDataURL(file);
}
From the mozilla website 看来您需要向 reader 添加一个加载事件侦听器。部分IE版本不支持该示例代码
...
reader.addEventListener("load", () => {
this.setState(state => ({
...state,
form:{
frontDesign: [reader.result]
}
}))
const url = reader.result;
console.log(url);
}, false);
...
在这里工作 condeSanbox:https://codesandbox.io/s/affectionate-lamport-dnbij