React Native: Native File Selector
npm install react-native-file-selectorReactNative: Native File Selector (Android/iOS)
If this project has helped you out, please support us with a star 🌟
This library is a ReactNative Bridge around native libraries. It allows you to natively select/pick file from device file system:
| Android: nbsp-team/MaterialFilePicker/ |
| ----------------- |
|
|
> Note: It allows you to pick file without using Intent/Third Party Software
| iOS: marmelroy/FileBrowser |
| ----------------- |
| |
> Note: It allows you to select only local files associate to app sandbox.
$ npm install react-native-file-selector --save> RN60 above please use react-native-file-selector V1 and above
- iOS
> iOS Prerequisite: Please make sure CocoaPods is installed on your system
- Add the following to your Podfile -> ios/Podfile and run pod update:
``
use_native_modules!
pod 'RNFileSelector', :path => '../node_modules/react-native-file-selector/ios'
use_frameworks! :linkage => :static
pod 'FileBrowser', :git => 'https://github.com/prscX/FileBrowser'
# Follow Flipper iOS Setup Guidelines
# This is required because iOSPhotoEditor is implemented using Swift and we have to use use_frameworks! in Podfile
$static_framework = ['FlipperKit', 'Flipper', 'Flipper-Folly',
'CocoaAsyncSocket', 'ComponentKit', 'Flipper-DoubleConversion',
'Flipper-Glog', 'Flipper-PeerTalk', 'Flipper-RSocket', 'Yoga', 'YogaKit',
'CocoaLibEvent', 'OpenSSL-Universal', 'boost-for-react-native']
pre_install do |installer|
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
installer.pod_targets.each do |pod|
if $static_framework.include?(pod.name)
def pod.build_type;
Pod::BuildType.static_library
end
end
end
end
`
- Please make sure Flipper iOS Setup Guidelines steps are added to Podfile, since iOSPhotoEditor is implemented using Swift and we have to use use_frameworks! in Podfile
- Android
- Add below color attributes in your app's android/app/src/main/res/values/color.xml file. You can provide your own color codes.
``
> RN60 below please use react-native-file-selector V.0.*
$ react-native link react-native-file-selector
#### Android
- Add below snippet in your app build.gradle file
`
repositories {
maven {
url "http://dl.bintray.com/lukaville/maven"
}
maven { url "https://maven.google.com" }
...
}
allprojects {
repositories {
mavenLocal()
jcenter()
maven { url "https://maven.google.com" }
...
}
}
`
> Note: This library is supported Android 27 > above
- Add below color attributes in your app res/color.xml. You can provide your own color codes
``
#### iOS
- After react-native link react-native-file-selector, please verify node_modules/react-native-file-selector/ios/ contains Pods folder. If does not exist please execute pod install command on node_modules/react-native-file-selector/ios/, if any error => try pod repo update then pod installnode_modules/react-native-file-selector/ios/pods/Pods.xcodeproject
- After verification, open your project and create a folder 'RNFileSelector' under Libraries.
- Drag into RNFileSelector, as well as the RNFileSelector.xcodeproject if it does not exist.FileBrowser.framework
- Add the into your project's Embedded Binaries and make sure the framework is also in linked libraries.Build Settings -> Frameworks Search Path
- Go to your project's and add ${BUILT_PRODUCTS_DIR}/FileBrowser non-recursive.
- Add below snippet in your app AppDelegate.m. This basically adds navigation controller in order to push list of files screen
`
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
navigationController.navigationBar.hidden = YES;
self.window.rootViewController = navigationController;
// self.window.rootViewController = rootViewController;
`
- Now build your iOS app through Xcode

-
import RNFileSelector from 'react-native-file-selector';
- API Way
`javascript`
RNFileSelector.Show(
{
title: 'Select File',
onDone: (path) => {
console.log('file selected: ' + path)
},
onCancel: () => {
console.log('cancelled')
}
}
)
- React Way
`javascript`
console.log("file selected: " + path);
}} onCancel={() => {
console.log("cancelled");
}}/>
| Prop | Type | Default | Note |
| ----------------- | ---------- | ------- | ---------------------------------------------------------------------------------------------------------- |
| title | string | | Title on the toolbarcloseMenu
| | string | true | Color of tinthiddenFiles: Android
| | bool | false | If true it shows hidden files as well |path
| | string | | Path of directory | |filter
| | string | | Filter to sort the files | |filterDirectories: Android
| | bool | | Filter should be applied on directories or not onDone
| | func | | Function called when file is selected | |onCancel
| | func | | Function called when file selector is closed without selecting any file | |visible
| | bool` | false | To invoke file selector | |
> Note
> - Filter
> - Android: Please find regex/Pattern for defining filter
> - iOS: Array of file extension needs to be ignore
- Android: nbsp-team/MaterialFilePicker/
- iOS: marmelroy/FileBrowser
RNFileSelector @ prscX
However, if you get some profit from this or just want to encourage me to continue creating stuff, there are few ways you can do it:
* Starring and sharing the projects you like 🚀
* If you're feeling especially charitable, please follow prscX on GitHub.
Thanks! ❤️
prscX.github.io
Pranav >