reactjs - 从本地机器加载图像并使用 react js 渲染
问题描述
我正在尝试从本地机器加载图像然后显示它,问题是当我加载图像时,它没有给我文件的绝对路径,而是给出了一个假路径,如下所示:
C:\fakepath\image0.jpg
问题是这个路径不存在所以会报错,如何获取绝对路径,然后在上传图片的时候渲染图片?这是我拥有的代码:
class MyApp extends React.Component {
constructor(props) {
super(props);
this.state = {
isImage: false,
val: "",
};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(e) {
this.setState({
mySrc: e.target.value,
isImage: true,
});
}
render() {
const { isImage, val } = this.state;
return (
<div>
<form onSubmit={this.handleSubmit}>
<input
type="file"
id="imgInp"
value={val}
onChange={this.handleChange}
/>
<img id="myImg" src={val} alt="car image" />
</form>
{isImage ? (
<img src={require(val)} />
) : (
<p> Please select an image </p>
)}
</div>
);
}
}
export default MyApp;
解决方案
该文件存储在event.target.files[0]
not ,然后您需要使用URL.createObjectURL()event.target.value
为该文件创建一个 URL
所以在你的情况下应该是
mySrc: URL.createObjectURL(event.target.files[0])
推荐阅读
- firebase - Firebase Storage image does not upload properly
- javascript - 为什么这个 WebP Support 函数每次运行时都会返回随机结果?
- arrays - react-native-multiple-select 存储提交时选择的项目
- mysql - 选择返回空
- r - 在 R 中重命名多个数据集
- mysql - MySQL:最大日期(),汇总不同列的最后日期值
- quickbooks-online - QuickBooks Online SalesReceipt Api 和多种付款方式
- arrays - Powershell脚本似乎不应该花费很长时间?
- spring - 通过springs`WebClient`进行api调用的正确方法是什么,但忽略结果?
- node.js - 用 Express 编写的 API 的 VS Code 中未验证的断点