zoukankan      html  css  js  c++  java
  • react hooks 图片上传

    react hooks 多图片上传

    <div className={feed.uploadcot}>
                                    <ul className={feed.uploadimg}>
                                        {
                                            arrImg?.length >0 && arrImg.map((item, index) =>{
                                                return(
                                                    <li key={index}>
                                                        <img src={item} />
                                                    </li>
                                                )
                                            })
                                        }
                                        
                                    </ul>
                                    <div className={feed.upload}>
                                        <div className={feed.plusA}>
                                            <span>+</span>
                                            <input type="file" onChange={(event) =>handleUpdate(event)}  className={feed.file}/>
                                        </div>
                                    </div>
    
                                </div>
       let accepts = ['image/jpeg', 'image/jpg', 'image/png']
        const [arrImg, setArrImg] = useState([])
    
        
        
        const handleUpdate = (event) =>{
            if(arrImg.length > 4){
                setMsgskbar("最多可以上传5张图片")
                setSnackbar({ ...snackbar, open: true })
                return false
            }
            let fileImg =event.target.files[0];
            // console.log(fileImg)
            Accepts(fileImg)
          }
            // 图片格式限定
        const Accepts = (files) => {
            if(!files){
            return false
            }
            let type = Array.isArray(accepts) && accepts.indexOf(files.type,0)
    
            if(type >= 0){
            if (files.size > 2097152) {
                setMsgskbar("上传的文件不能大于2M")
                setSnackbar({ ...snackbar, open: true })
                return;
            }else{
                Preview(files)
            }
        }else{
            setMsgskbar("请上传格式为jpg、png,jpeg的图片")
            setSnackbar({ ...snackbar, open: true })
            }
        }
    
        // 本地预览
        const Preview = (file) =>{ 
            const reader = new FileReader();
            reader.readAsDataURL(file);
            reader.onload = function (e) {
            //   arr添加新数据
              setArrImg([...arrImg, this.result])
            }
        
          }
  • 相关阅读:
    Http服务器实现文件上传与下载(二)
    Http服务器实现文件上传与下载(三)
    NHibernate VS IbatisNet
    5. Element-UI的基本使用
    4. Vue脚手架
    3. Vue单文件组件
    webpack中的加载器
    webpack
    02.模块化相关规范
    01.前端工程化的学习目标
  • 原文地址:https://www.cnblogs.com/yizhilin/p/14483106.html
Copyright © 2011-2022 走看看