🦁

yupでfile size validation入れる

2023/10/04に公開

array()でやるとかの記事があるけどFileListが入ってくるのでそれだとうまく行かない
type scriptでやる場合はmixedにジェネリクスでFileListを指定してあげると良さそうです

const ValidationSchema = object().shape({
  files: mixed<FileList>()
    .required('ファイルが添付されていません')
  .test('is-valid-size', `ファイル合計サイズが10MBを超えています`, (files: FileList):boolean => {
    const totalSize = Array.from(files).reduce(
      (size, file) => size + file.size,
      0
    );
    return totalSize < 10000000;
  })
});

Discussion