filepond 不适用于视频/* 在 safari 中键入

filepond doesn't work with video/* type in safari

我在 React 中使用 FilePond library,它在 chrome 中运行良好,但在 Safari 中却不行。 我的问题是:

当我设置 acceptedFileTypes={['video/*']}

  1. 在 chrome - 它接受所有视频类型。
  2. 在 safari 中 - 它只接受 mov 文件,而不是所有视频类型的文件。

当我设置 acceptedFileTypes={['video/mp4']} 时:它对两者都执行预期的行为,并且只接受 mp4 文件。

我不想设置所有可能的视频类型,并且想使用 video/* 过滤器。

Safari 浏览器版本:13.1.1

<FilePond
  ref={fileRef}
  files={files}
  allowMultiple={false}
  labelIdle={labelIdle}
  className="video"
  instantUpload={false}
  onupdatefiles={(items) => {
    setFiles(items)
  }}
  onremovefile={() => toggleDisplayProgress(false)}
  acceptedFileTypes={['video/*']}
  required
/>

我可以在这里专门设置视频类型 - https://trac.webkit.org/browser/trunk/Source/WebCore/platform/MIMETypeRegistry.cpp as described in this ticket

浏览器检测文件的方式不尽相同。根据 OS 这可能会有所不同。 fileValidateTypeDetectType 钩子有助于检测正确的类型。您可以使用它根据(例如)文件扩展名手动设置正确的类型。

FilePond.create(document.querySelector('input'), {
    acceptedFileTypes: ['image/png'],
    fileValidateTypeDetectType: (source, type) => new Promise((resolve, reject) => {
        
        // Do custom type detection here and resolve promise

        resolve(type);
    })
});

参见:https://pqina.nl/filepond/docs/patterns/plugins/file-validate-type/#custom-type-detection

我最终使用了 quicktimemp4,效果很好:

acceptedFileTypes={['video/quicktime', 'video/mp4']}.

无法在 Safari 中使用 video/*