react-antd中使用Upload实现图片裁剪-上传-预览的功能

简介: 使用react中antd实现图片的上传裁剪和预览,记录一下实现过程,希望能对大家有帮助

前言

使用react中antd实现图片的上传裁剪和预览,记录一下实现过程,希望能对大家有帮助

实现

我们这里用到的是antd框架,实现
图片上传的功能我们需要安装一个插件antd-img-crop

yarn add antd-img-crop

然后就可以进行使用:

import React, { memo, useState } from 'react'
import { Upload } from 'antd'
import ImgCrop from ' 
'

export default memo(function Index() {
  const [fileList, setFileList] = useState([
    {
      uid: '-1',
      name: 'image.png',
      status: 'done',
      url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',
    },
  ]);

  const onChange = ({ fileList: newFileList }) => {
    setFileList(newFileList);
  };

  const onPreview = async file => {
    let src = file.url;
    if (!src) {
      src = await new Promise(resolve => {
        const reader = new FileReader();
        reader.readAsDataURL(file.originFileObj);
        reader.onload = () => resolve(reader.result);
      });
    }
    const image = new Image();
    image.src = src;
    const imgWindow = window.open(src);
    imgWindow.document.write(image.outerHTML);
  };
  return (
    <div>
      <ImgCrop rotate>
        <Upload
          action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
          listType="picture-card"
          fileList={fileList}
          onChange={onChange}
          onPreview={onPreview}
        >
          {fileList.length < 5 && '+ Upload'}
        </Upload>
      </ImgCrop>
    </div>
  )
})

使用 < ImgCrop rotate>组件,里面使用upload组件,用到的相关属性的作用:

action:上传的地址
listType: 上传列表的内建样式,支持三种基本样式 text, picture 和 picture-card
fileList:已经上传的文件列表(受控)
onChange:上传中、完成、失败都会调用这个函数。
onPreview:点击文件链接或预览图标时的回调

关于图片上传还有更多的属性,可以参考官方文档
来看一下实现的效果:

在这里插入图片描述
antd给我们提供了很多相关的功能非常方便,大家可以自己去试一试,更多属性参考官方文档,实现这样的功能还是比较简单的,也可以根据自己的需求做上传文件之类的操作

相关文章
|
10月前
|
存储 编解码 前端开发
React 视频上传组件 Video Upload
随着互联网的发展,视频内容在网站和应用中愈发重要。本文探讨如何使用React构建高效、可靠的视频上传组件,涵盖基础概念、常见问题及解决方案。通过React的虚拟DOM和组件化开发模式,实现文件选择、进度显示、格式验证等功能,并解决跨域请求、并发上传等易错点。提供完整代码案例,确保用户能顺畅上传视频。
422 92
|
10月前
|
移动开发 前端开发 JavaScript
React 图片裁剪组件 Image Cropper
本文介绍了在React中实现图片裁剪功能的方法,涵盖基础知识、常见问题及解决方案。首先,通过第三方库如`react-image-crop`或`cropperjs-react`可轻松实现图片裁剪。接着,针对性能和兼容性问题,提供了优化图片加载、处理裁剪区域响应慢、解决浏览器差异等方案。最后,通过代码案例详细解释了如何创建一个基本的图片裁剪组件,并提出了优化建议,如使用`React.memo`、添加样式支持及处理大图片预览,帮助开发者避免常见错误并提升用户体验。
683 67
|
9月前
|
移动开发 前端开发 UED
React 音频预览组件:Audio Preview
本文介绍如何使用 React 构建音频预览组件,涵盖基础实现、常见问题及解决方案。通过 HTML5 `&lt;audio&gt;` 标签和 React 状态管理,实现播放控制。解决文件路径、浏览器兼容性等问题,并优化性能,避免状态不同步和内存泄漏,提升用户体验。
214 22
|
9月前
|
移动开发 前端开发 JavaScript
React 音频上传组件 Audio Upload
本文介绍如何使用React构建音频上传组件,涵盖文件上传原理、React中文件处理步骤及常见问题解决方案。通过代码示例详细讲解了文件格式和大小限制、预览功能、进度条显示等实现方法,并针对跨域问题、文件名冲突和错误处理等易错点提供了解决方案,帮助开发者构建稳定可靠的音频上传功能。
254 25
|
9月前
|
移动开发 前端开发 UED
React 音频预览组件 Audio Preview
在现代Web开发中,React框架下的音频播放功能日益重要。本文介绍如何使用React创建交互式音频预览组件,涵盖基础构建、常见问题及解决方案。通过HTML5音频标签实现基本播放控制,使用状态管理增强功能。解决跨域资源共享(CORS)、格式兼容性、自动播放限制等问题,并探讨性能优化、样式定制、事件处理、移动端适配、错误处理、国际化支持及组件集成等关键点,帮助开发者提升组件稳定性和用户体验。
169 10
|
10月前
|
移动开发 前端开发 API
React 拖拽上传组件 Drag & Drop Upload
拖拽上传(Drag & Drop Upload)是现代文件上传方式,允许用户通过简单拖拽操作将文件上传至网页。本文介绍如何在React应用中实现拖拽上传组件,涵盖HTML5拖放API、React状态管理、组件构建及常见问题解决。包括视觉反馈、文件类型和大小限制等优化措施,确保组件的用户体验和稳定性。
393 27
|
10月前
|
前端开发 安全 UED
React 文件预览组件:File Preview
在现代Web应用中,文件上传和预览功能至关重要。本文基于React库,详细介绍如何构建文件预览组件,涵盖文件选择器、图片预览、文件大小限制及多种文件类型支持。通过实际代码示例,解析常见问题如跨域请求、文件路径处理和状态管理,并提供解决方案。帮助开发者提升用户体验,减少误操作。
704 2
|
9月前
|
前端开发 JavaScript UED
React 音频上传组件:Audio Upload
本文介绍如何使用React构建音频上传组件,涵盖文件选择、预览、上传操作及错误处理。React的优势包括状态管理、组件化开发和丰富的生态系统支持。常见问题如文件类型验证、大小限制、并发上传控制、进度显示和错误重试机制也得到了详细探讨。通过示例代码展示了完整的实现过程,帮助开发者提升组件的稳定性和用户体验。
149 0
|
移动开发 前端开发 JavaScript
React DnD:实现拖拽功能的终极方案?
本文首发于微信公众号“前端徐徐”,介绍了一个强大的 React 拖拽库——React DnD。React DnD 帮助开发者轻松创建复杂的拖拽界面,适用于 Trello 风格的应用、列表重排序、可拖拽的 UI 组件等场景。文章详细介绍了 React DnD 的基本信息、主要特点、使用场景及快速上手指南。
1214 3
React DnD:实现拖拽功能的终极方案?
|
移动开发 前端开发
react项目配合diff实现文件对比差异功能
在React项目中,可以使用`diff`库实现文件内容对比差异功能。首先安装`diff`库,然后在组件中引入并使用`Diff.diffChars`或`Diff.diffLines`方法比较文本差异。通过循环遍历`diff`结果,可以生成不同样式的HTML元素来高亮显示文本差异。
650 1
react项目配合diff实现文件对比差异功能