超大文件传送:如何使用Dropzone组件拒绝超大文件

我使用React-DropzoneDropzone组件与 Nextjs 和 TypeScript。

如果文件大小超过 30MB(30000000字节),我想拒绝上传。

目前,当将大文件放入区域时-出现此错误:

我看到有一个名为onDropRejected的属性与Dropzone组件在这个documentation中使用,但是我们如何使用这个而不是像上面那样遇到错误?

是我的 UI 的样子:

My code:
type Props = {
  name?: string;
  isError?: boolean;
  onChange?: (id: string) => void;
};
export const FileUploader = ({ name, isError, onChange }: Props) => {
  const [uploading, setUploading] = useState(false);
  const [nameFile, setNameFile] = useState<string>('File format: CSV Maximum upload size: 30MB');
  const [currId, setCurrId] = useState('');
  useEffect(() => {
    name && setNameFile(name);
  }, [name]);
  const handleDrop = async (acceptedFiles: File[]) => {
    setUploading(true);
    const file = acceptedFiles[0];
    const res = await AssetA.create(file, AssetResourceType.marketingAction);
    if (res.id) {
      setNameFile(file.name);
      onChange?.(res.id);
      currId && (await AssetA.remove(currId));
      setCurrId(res.id);
    }
    setUploading(false);
  };
  return (
    <div>
      <Dropzone
        onDrop={handleDrop}
        multiple={false}
        accept={['image/*', 'text/csv']}
        disabled={uploading}
        maxSize={30000000}>
        {({ getRootProps, getInputProps }) => (
          <div
            {...getRootProps({ className: 'dropzone' })}
            className='flex items-center w-full h-40 text-center'>
            <input {...getInputProps()} />
            <div
              className={classNames(
                'rounded flex h-full items-center justify-center flex-col flex-1 border border-dashed text-gray-700 mr-2.5 py-6',
                isError ? 'border-danger' : 'border-gray'
              )}>
              <Icon name='upload' size={20} />
              <div className='mb-2.5 text-medium'>Drag and drop to upload</div>
              <on
                type='on'
                className='px-2.5 border-gray-700 border rounded-full text-small px-3 py-0.5'>
                Select file
              </on>
              <div className='mt-2 text-gray-500 text-small'>{nameFile}</div>
            </div>
          </div>
        )}
      </Dropzone>
    </div>
  );
};
2

您可以添加一个函数验证器:

const fileValidator = (file) => {
if (file.size > 30000000) {
  return {
    code: "size-too-large",
    message: `file is larger than 30MB`,
  };
}
return null;
}

然后,在您的 useDropZone 中添加您的函数:

 const { getRootProps, getInputProps, isDragAccept, isDragReject } =
useDropzone({
  onDrop,
  validator: fileValidator,
});

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(185)
如何查看邮箱服务器地址:什么是SMTP服务器地址以及如何获取SMTP服务器地址
上一篇
口算题小程序:滑动窗口算法(4 by 4 sliding window price)
下一篇

相关推荐

  • 声屏障安装:Qt同步屏障(barrier barrier fruit)

    关于声屏障安装的问题,在barrier barrier fruit中经常遇到,是否有一个 Qt 等效于同步屏障?第一个 N-1 调用者到wait块和第 N 个调用者到wait导致它们全部释放的类型。…

    2024-01-10 08:33:35
    0 45 99
  • Damp:在谈论单元测试时“DAMPnotDRY”是什么意思

    关于Damp的问题,在damp check中经常遇到,我听到有人说单元测试(例如 nUnit,jUnit,xUnit)应该是…

    2024-04-03 06:16:12
    0 34 71
  • 怎么查看端口被哪个程序占用:RabbitMQ崩溃说端口被占用

    关于怎么查看端口被哪个程序占用的问题,在network port occupied can't start server中经常遇到,我试图第一次打开 RabbitMQ,所以我可以使用芹菜。我试图以管理员身份运行 'rabbitmq-server' 文件,但是每次按 run 时弹出这个错误。我看到另一个 stackOverflow 帖子有同样的问题,但是唯一的评论建议我杀死端口发生的事情。…

    2023-10-27 02:04:27
    0 26 86
  • 群晖sso服务器:JIRAoauth与人群SSO服务器

    关于群晖sso服务器的问题,在jira sso中经常遇到,我正在帮助客户端将 OAuth 用于链接到人群用户 DB 的 JIRA。每当用户尝试针对 JIRA 授权端点进行 oauth 时,它们都会重定向到其仪表板。…

    2024-01-12 08:00:41
    0 67 88
  • Url转发:删除URL转发-Freenom

    关于Url转发的问题,在feeenom中经常遇到,不小心我在 freenom 中制作了 url forward。现在我无法禁用它。它说“留空禁用”,但是当我将其留空时,有错误,我必须指定 URL 或 nameserver。任何帮助?试图在 google 上查找,但我没有找到它。…

    2023-12-25 05:26:18
    0 81 63
  • 刑事诉讼法属于程序法:整数除法属性(properties of integers)

    关于刑事诉讼法属于程序法的问题,在properties of integers中经常遇到,下面的整数算术属性成立吗?…

    2023-10-25 12:32:22
    0 66 19
  • Workstation服务:VMwareWorkstation无法访问VMware vSphere服务器

    关于Workstation服务的问题,在could not connect to one or more vcenter server systems中经常遇到,从 VMware Workstation 12.7 Pro 到同一网络上的 VMware vSphere 6.5 服务器的访问大约 10 天后,出现故障。输入 vSphere 的登录名和密码并单击“连接”后,工作站前端将立即关闭。(vSphere 6.5 服务器正常工作)BTW 在工作站上运行 VM 的解决方案在工作站前端关闭后,谁会继续运行?…

    2024-04-08 14:16:03
    0 99 30
  • Dxf文件怎么打开:DXF文件-无法在Autodesk Viewer中打开

    关于Dxf文件怎么打开的问题,在autocad dxf viewer中经常遇到,我们正在构建一个 DXF 导出器,从我所读到的,这个非常简单的文件应该是有效的。我们没有任何 CAD 工具来测试,所以我的调试能力非常有限。这在the Proficad online viewer中打开很好,但我从Autodesk viewer得到一个错误,说“绘图文件无效,无法查看”。…

    2024-02-29 14:35:35
    0 74 54

发表评论

登录 后才能评论

评论列表(72条)