javascript - 文件上传器不显示图片
问题描述
我有个问题。我正在创建一个小文件上传器,用于上传照片。如果用户按下图标,文件上传器就会出现,然后他可以选择一张照片。选择照片后不显示。问题究竟出在哪里?
import React, { useState } from 'react';
const Profilpic = () => {
const [preview, setPreview] = useState(null);
const fileSelectedHandler = (event) => {
console.log(event.target.files[0]);
if (event.target.files[0].size > 71680) {
alert('File is too big! Wie Samys Dick');
} else {
setPreview(event.target.files[0]);
}
};
return (
<div>
{preview ? (
<img src={preview} alt="Preview" width="150px" height="150px" />
) : (
<div>
<label htmlFor="myInput">
<i className="fas fa-user-circle"></i>
</label>
<input
id="myInput"
style={{ display: 'none' }}
type={'file'}
onChange={fileSelectedHandler}
/>
</div>
)}
</div>
);
};
export default Profilpic;
解决方案
首先从输入标签中删除样式标签,然后用那个替换函数
const fileSelectedHandler = (event) => {
console.log(event.target.files[0]);
if (event.target.files[0].size > 71680) {
alert("File is too big! Wie Samys Dick");
} else {
const reader = new FileReader();
reader.readAsDataURL(event.target.files[0]);
reader.onloadend = () => {
setPreview(reader.result);
};
}
};
推荐阅读
- compiler-errors - 第一次在 VHDL / MODELSIM 中:无法编译组件 [(vcom-1576) 期待 END。]
- apache - 配置 Apache 反向代理以使用 CKAN 数据集预览
- android - Android Koin 简单对象注入失败
- scala - 基于条件 spark scala 在两列或三列上的 orderBy 数据框
- sql - SQL 新手,无法获取过滤多个参数的代码
- laravel - 使用Vue-Router路由信息生成页眉
- java - HashMap 有 integer[] 类型的键,虽然它的 containsKey 方法返回 false?
- java - 如何在 BridgeClass 中的 configureFieldMetadata 之前调用 set
- react-native - 如何使用一个数组和两个反应原生选择器
- sql - 如何在 PostgreSQL 中按天分割时间间隔