首页 > 解决方案 > 如何在 react-native-document-picker 中仅选择 mp3 文件?

问题描述

如标题所示。我试图只选择 mp3 文件,但似乎在 iphone 上它们不可用。现在我正在以这种方式挑选文件:

  const results = await DocumentPicker.pick({
type: [DocumentPicker.types.audio],
  })

但是类型是这样定义的,除了它们我不能选择任何东西:

  type Types = {
    mimeTypes: {
      allFiles: '*/*',
      audio: 'audio/*',
      images: 'image/*',
      plainText: 'text/plain',
      pdf: 'application/pdf',
      video: 'video/*',
      zip: 'application/zip',
    },
    utis: {
      allFiles: 'public.content',
      audio: 'public.audio',
      images: 'public.image',
      plainText: 'public.plain-text',
      pdf: 'com.adobe.pdf',
      video: 'public.movie',
      zip: 'public.zip-archive',
    },
    extensions: {
      allFiles: '*',
      audio:
        '.3g2 .3gp .aac .adt .adts .aif .aifc .aiff .asf .au .m3u .m4a .m4b .mid .midi .mp2 .mp3 .mp4 .rmi .snd .wav .wax .wma',
      images: '.jpeg .jpg .png',
      plainText: '.txt',
      pdf: '.pdf',
      video: '.mp4',
      zip: '.zip .gz',
    },
  };

有什么办法吗?

标签: react-native

解决方案


您可以通过Android 上的常见 MIME 类型和iOS 上的统一类型标识符过滤文件类型。所以在Javascript中这样的东西应该可以工作:

const res = await DocumentPicker.pick({
  type: [Platform.OS === 'ios' ? 'public.mp3' : 'audio/mpeg'],
});

推荐阅读