父组件模板:

import UploadComponent from "./component";<Col span={24}><Form.ItemclassName={styles.uploadImgItem}label="Image"name="uploadPhoto"//用了预览的组件,手动绑定图片路径,NONO!rules={rulesObj.Image}><UploadComponent />//这个是上传图片的组件!</Form.Item></Col>

上传图片的重要组件:

import React, { useState, useEffect } from "react";
import { Upload, Modal, message } from 'antd';
import { requestUrl, getUploadFileType, MessageError, MessageSuccess } from '../../../../utils/utils';
import { v4 as uuidv4 } from 'uuid';
import { PlusOutlined } from "@ant-design/icons";
import styles from "./index.less";
export default (props) => {const [fileList, setFileList] = useState([])const [previewVisible, setPreviewVisible] = useState(false);const [previewImage, setPreviewImage] = useState('');useEffect(() => {if (props.value) {let newFileList = props.value.map((item, index) => {return {uid: item.id,id: item.id,url: item.url,}})setFileList(newFileList)//把每一个返回回来的 图片item 处理好后 放入DileList}}, [props])const handleChange = ({ file, fileList }) => {fileList = fileList.map((file) => {if (file.response) {const { response } = filefile.uid = response.DocumentId;file.id = response.DocumentId;file.url = `${ATTACHMENT_URL}${response.UploadPath}`//预览}return file;});if (file.status !== undefined) {if (file.status === 'done') {console.log('上传成功')// console.log(fileList);triggerChange(fileList);} else if (file.status === 'error') {console.log('上传失败')} else if (file.status === 'removed') {if (typeof file.uid === 'number') {//请求接口,删除已经保存过的图片,并且成功之后triggerChangetriggerChange(fileList);} else {//只是上传到了服务器,并没有保存,直接riggerChangetriggerChange(fileList);}}}setFileList([...fileList]);}const triggerChange = (value) => {const onChange = props.onChange;if (onChange) {onChange(value);//将改变的值 传给父组件}};const uploadButton = (<div><PlusOutlined /><div className="ant-upload-text">Upload</div></div>);const uploadImages = {action: requestUrl + '/api/common/CommonUpload',headers: {SessionKey: `${localStorage.getItem('sk')}`,},accept:".jpeg,.png,.jpg",listType:"picture-card",data: (file) => {return {UploadType: 1027,//后端定义的typeId: uuidv4(),FileType: getUploadFileType(file),};},beforeUpload: (file) => {// 礼品imageconst limitFileNameLen = 100;return new Promise((resolve, reject) => {if (file.name && file.name.length > limitFileNameLen) {message.error('Please upload a file with a file name less than 100 characters');//请上传文件名不超过100个字符的文件return Promise.reject();}const limitM = 2;const isLimit = file.size / 1024 / 1024 <= limitM;console.log(isLimit);if (!isLimit) {message.error('The size exceeds the limit');return Promise.reject();}return resolve();});},onPreview :(file) => {setPreviewImage(file.url);setPreviewVisible(true);}}return (<divclassName={styles.box}><Upload{...uploadImages}fileList={fileList}onChange={handleChange}>{fileList.length >= 4 ? null : uploadButton}</Upload><Modalvisible={previewVisible}title='preview'footer={null}onCancel={() => setPreviewVisible(false)}><img alt="Network fault" style={{ width: '100%' }} src={previewImage} /></Modal><span >建议尺寸750*350,支持jpg/jpeg、png格式图片,小于2M</span></div>);
};

antd Upload 上传多张图片 react hooks相关推荐

  1. 【Antd Design Upload】 antd Upload 上传时只有Uploading状态,无法获取返回的数据

    问题:antd Upload 上传时只触发Uploading状态,无法获取服务器返回的response,根据控制台的结果发现只有一种Uploading,上传图片时只触发了一次. 根据官网可以知道.上传 ...

  2. ant react 上传_React实战之Ant Design—Upload上传_附件上传

    React实战之Ant Design-Upload上传_附件上传 Upload组件大家都在官方文档中看过了,但写的时候还是会遇到许多问题,一些新手看了文档后感觉无从下手,本文过多的简绍就不说了,直接看 ...

  3. antd 图片上传遇到的坑----图片回显(Upload)

    antd 图片上传遇到的坑----图片回显(Upload) 最近又被安排了一个前端的项目,遇到了一个图片上传的问题,用的是antd的Upload组件,在这遇到的问题和大家分享一下,下网可以帮到需要的人 ...

  4. Egg整合antd文件上传以及防踩坑指南

    Egg整合antd文件上传以及防踩坑指南 前言 一. 项目编写 二. 注意事项 2.1 清理缓存 2.2 antd的Upload组件得到的事件对象问题 2.3 关于onChange事件的注意 前言 最 ...

  5. 高手教你PHP上传多张图片

    高手教你PHP上传多张图片 对于我们来说上传一张图片是非常简单的事情,这里教大家一个关于PHP上传多张图片的代码分析,希望对大家有帮助. 学习PHP时,你可能会遇到PHP上传多张图片问题,这里将介绍P ...

  6. okhttp上传图片和其他参数_Android中Okhttp3实现上传多张图片同时传递参数_放手_前端开发者...

    之前上传图片都是直接将图片转化为io流传给服务器,没有用框架传图片. 最近做项目,打算换个方法上传图片. Android发展到现在,Okhttp显得越来越重要,所以,这次我选择用Okhttp上传图片. ...

  7. 微信小程序-上传多张图片加进度,持续修正中……

    tips.参考网上资料的改进版 1.怎么使用.html <!--无限制需要在js代码里设置数量,upload为上传地址,或者说图片服务器--><up-picurl="{{u ...

  8. el upload ajax,Upload 上传 el-upload 上传配置请求头为Content-Type: multipart/form-data

    api接口处添加属性 (标红处) // 校验台账 export const checkEquiment = (data) => { return axios({ url: '/job/equip ...

  9. elementui展示多张图片_elementUI 上传多张图片并预览大图左右切换

    前段时间项目需求中涉及到上传多张图片 当条信息查看时可预览大图功能,项目框架vue.js+elementUI,抽时间在此做个整理记录,如有更好的方法 欢迎大家互相交流 页面列表更多操作-修改-先选择图 ...

最新文章

  1. 亲手制作一个《哈利·波特》人物图谱,原来罗恩和赫敏的姻缘从第一部就已注定?...
  2. [JAVA基础类库] Objec类
  3. python中字典的常用函数_python中得字典和常用函数总结
  4. 《论道HTML5》内容技术分享活动
  5. CSS 加过渡效果transition
  6. 关于深度学习编译器,这些知识你需要了解一下
  7. 洛克人html5,《洛克人Zero/Zx合集》:跳票冷饭,与预期有差但依旧很香
  8. JS设为首页、添加到收藏夹
  9. 童鞋们,颜色采色器,实用工具
  10. SQL行列转换-sum函数的妙用
  11. 浅谈学习的深度和广度
  12. 分享《模拟专升本考试排名》
  13. 用python自动办公_用Python自动办公,做职场高手
  14. Python之os库
  15. hdl_localization试读
  16. c51语言中数据的存储类型,C51-数据存储类型
  17. u盘安装成功计算机里找不到文件夹,u盘里文件夹不见了怎么办 u盘里文件夹不见了原因及解决方法...
  18. 基于 Vue JS、Element UI、Nuxt JS的项目PC端前端手册
  19. 【GD32F427开发板试用】06-硬件I2C软件I2C驱动0.91OLED
  20. 计算机专业学习的32个网站

热门文章

  1. 最全PHP防止sql注入方法
  2. 1.跟我学solr---在tomcat下部署solr
  3. python 协程 gevent
  4. http://bbs.duowan.com/forum.php,0512寻仙多玩论坛汇总
  5. 纪念我去年故去的同事
  6. 夏日出行好伴侣,华为FreeBuds 4堪称清凉好装备
  7. c语言数码管,数码管原理
  8. 什么品牌的护眼台灯比较好?适合学生党、儿童、上班族使用的护眼台灯
  9. 《女人的起源》阅读笔记
  10. 前端学习笔记-07post请求和get请求,样式以及CSS