React antd upload组件上传视频并实现视频预览

这篇具有很好参考价值的文章主要介绍了React antd upload组件上传视频并实现视频预览。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录问题:antd的upload组件文档中对于视频的上传预览没有明确的文档demo,在这里记录一下

项目需求:支持图片及视频的上传并实现预览,点击上传后不会立即请求接口上传资源,后续点击确定再上传

上代码文章来源地址https://www.toymoban.com/news/detail-767194.html

                <ProFormUploadButton
                  name="upload"
                  label="广告"
                  max={1}
                  fieldProps={{
                    accept: 'image/png,video/mp4',
                    name: 'file',
                    listType: 'picture-card',
                    maxCount: 1,
                    withCredentials: false,
                    onPreview: handlePreview,
                    previewFile: (file) => {
                      if (file.type === 'video/mp4') {
                        return new Promise((resolve, reject) => {
                          const reader = new FileReader();
                          reader.readAsDataURL(file);
                          reader.onload = () => resolve(reader.result as string);
                          reader.onerror = (error) => reject(error);
                        });
                      } else {
                        return new Promise(async (resolve) => {
                          const img = await getBase64(file as RcFile);
                          resolve(img);
                        });
                      }
                    },
                    fileList: fileList,
                    // eslint-disable-next-line @typescript-eslint/no-shadow
                    onChange: ({ fileList }) => {
                      setFileList(fileList);
                    },
                    beforeUpload: () => {
                      return false;
                    },
                  }}
                  icon={<ToTopOutlined style={{ color: '#745CC3', fontSize: 24 }} />}
                  title=""
                  rules={[{ required: true, message: '请上传图片/视频' }]}
                />
const handleCancel = () => {
    setPreviewOpen(false);
    setPreviewVideoOpen(false);
    videoRef.current.pause();
  };

  const handlePreview = async (file: any) => {
    if (file.type === 'video/mp4') {
      const current = file.originFileObj;
      const fileReader = new FileReader();
      fileReader.readAsDataURL(current);
      fileReader.onload = function (e) {
        setPreviewVideo(e.target?.result);
        setPreviewVideoOpen(true);
        setPreviewVideoTitle(file.name || file.url!.substring(file.url!.lastIndexOf('/') + 1));
      };
    } else {
      if (!file.url && !file.preview) {
        file.preview = await getBase64(file.originFileObj as RcFile);
      }
      setPreviewImage(file.url || (file.preview as string));
      setPreviewOpen(true);
      setPreviewTitle(file.name || file.url!.substring(file.url!.lastIndexOf('/') + 1));
    }
  };
        <Modal
          open={previewOpen}
          zIndex={9999}
          title={previewTitle}
          footer={null}
          centered={true}
          onCancel={handleCancel}
        >
          <img alt="example" style={{ width: '100%' }} src={previewImage} />
        </Modal>
        <Modal
          open={previewVideoOpen}
          zIndex={9999}
          title={previewVideoTitle}
          footer={null}
          centered={true}
          width={540}
          onCancel={handleCancel}
        >
          <video src={previewVideo} controls width={500} height={500} ref={videoRef}>
            您的浏览器不支持 video 标签。
          </video>
        </Modal>

到了这里,关于React antd upload组件上传视频并实现视频预览的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • react结合antd的Table组件实现动态单元格合并

    首先看一下antd的Table表单组件,合并单元格,用到了rowSpan(合并行)和colSpan(合并列)  后台返回的数据 我们希望把category的值相同的,行合并成一个单元格 类似于这种  rowSpan这个属性可以指定合并行。例如说第一行,指定rowSpan为3,意思就是合并三行,则后面紧挨的两行的ro

    2024年02月12日
    浏览(45)
  • ant-design-vue中upload上传图片、视频实现预览功能

    有没有小伙伴在使用ant-design-vue的upload组件时,发现api文档在图片预览功能的介绍寥寥无几,而且也没提供视频预览的demo,在实际开发中碰到相应的需求直挠头~~~~,别急,下面来给大家分享一个我自己封装的upload组件,符合需求可以直接在项目中放到组件目录调用。 templat

    2024年02月12日
    浏览(45)
  • antd的upload组件的各种上传、下载操作(vue)

      作为前端小白刚刚接触上传、下载文件的操作也让我很头疼,所以利用时间记录一下方便巩固,希望能够帮到大家。   我将情况分为以下几种: 1.点击按钮上传单个文件 2.点击按钮上传多个文件 上面就说过了,把 中的数字换一下就行了。 3.上传单个按钮但是不想显示文件

    2024年02月03日
    浏览(39)
  • React UI组件库——如何快速实现antd的按需引入和自定义主题

    大家上午好呀~ 今天来学习一下React的UI组件库以及antd的使用相关的知识点。 感兴趣的小伙伴可以给个三连哦~ material-ui(国外) ant-design(国内蚂蚁金服) antd 是基于 Ant Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品。 安装antd组件库: 默认按需引入antd组件

    2024年02月02日
    浏览(38)
  • react使用antd的table组件,实现点击弹窗显示对应列的内容

    特别提醒:不能在table的columns的render里面设置弹窗组件渲染,因为这会导致弹窗显示的始终是最后一行的内容,因为这样渲染的结果是每一行都会重新渲染一遍这个弹窗并且会给传递一个content的值,渲染到最后一行的时候,就传递的是最后一行的值。这就导致你有多少行数据

    2024年02月12日
    浏览(40)
  • 扩展element-ui el-upload组件,实现复制粘贴上传图片文件,带图片预览功能

    控件改造 在窗口的 el-form 控件参数中添加 @paste.native 事件,事件绑定方法名 handlePaste 也可以在其他控件中添加事件监听,看个人需求。 注意: 监听粘贴事件时,需要当前页面先获取焦点,否则无法正常监听, 可以在页面加载后调用 focus() 获取焦点 粘贴功能Js部分参考资料

    2023年04月08日
    浏览(100)
  • React修改Antd组件的样式

    修改默认的antd组件,需要使用 global 修改后Steps样式 为什么需要这样写呢? 因为我们启动了 CSS Modules ,它是一种技术流的组织css代码的策略,它将为css提供默认的局部作用域。因为构建工具会在编译的时候自动把我们的类名加上一个哈希字符串,例如上面我们写的类名为t

    2024年02月11日
    浏览(54)
  • React antd tree树组件 - 父子节点没有自动关联情况下 - 显示半选、全选状态以及实现父子节点互动

    实现的效果图如下: 如Ant Design Vue 中所示,并没有提供获取半选节点的方法,当设置checked和checkStrictly时,父子节点也不再自动关联了 前提:从后端可以获取的数据分别是完整的树型数据、所有选中的节点数据(一个数组、同时包含 父节点和子节点),具体的大概数据可以

    2024年02月13日
    浏览(47)
  • uniApp 封装Upload组件实现图片和视频上传,解决官方api单一上传问题

     uniapp 官方api没有同时上传图片和视频的组件,所以就只能自己做了,在此记录下! 这里之所以循环一个一个上传是因为,我是用于小程序端的,目前uniapp不支持微信小程序以文件列表形式上传, filePath: item, //改为files可实现一次上传多个文件,仅App、H5( 2.6.15+)支持 具体

    2024年02月14日
    浏览(42)
  • element UI el-upload组件实现视频文件上传视频回显

    项目中需要提供一个视频介绍,使用Vue+Element UI中的el-upload组件实现视频上传及进度条展示,后台提供视频上传API并返回URL, 百度找了一番后最终实现了。 HTML JS data css 成功后的截图  

    2024年02月06日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包