You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Mar 16, 2019. It is now read-only.
Hi ! Thank you for reporting an issue, but we would like to remind you, we have a trouble shooting page in our wiki. You may want to take a look on that page :p
2
2
3
+
* please provide the version of installed library and RN project.
4
+
* a sample code snippet/repository is very helpful to spotting the problem.
3
5
* issues which have been tagged as 'needs feedback', will be closed after 2 weeks if receive no feedbacks.
Copy file name to clipboardExpand all lines: README.md
+33-5Lines changed: 33 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,15 +4,15 @@
4
4
5
5
A project committed to make file acess and data transfer easier, efficient for React Native developers.
6
6
7
+
> The npm package is inside `src` folder, if you're going to install using github repository do not point to here directly
8
+
7
9
## Features
8
10
- Transfer data directly from/to storage without BASE64 bridging
9
11
- File API supports normal files, Asset files, and CameraRoll files
10
12
- Native-to-native file manipulation API, reduce JS bridging performance loss
11
13
- File stream support for dealing with large file
12
14
- Blob, File, XMLHttpRequest polyfills that make browser-based library available in RN (experimental)
13
15
14
-
> The npm package is inside `src` folder, if you're going to install via git repository do not directly poiint to this folder
15
-
16
16
## TOC
17
17
*[About](#user-content-about)
18
18
*[Installation](#user-content-installation)
@@ -157,6 +157,8 @@ To sum up :
157
157
- Otherwise, if a string starts with `RNFetchBlob-file://` (which can simply done by `RNFetchBlob.wrap(PATH_TO_THE_FILE)`), it will try to find the data from the URI string after `RNFetchBlob-file://` and use it as request body.
158
158
- To send the body as-is, simply use a `Content-Type` header not containing `;BASE64` or `application/octet`.
159
159
160
+
> It is Worth to mentioning that the HTTP request uses cache by default, if you're going to disable it simply add a Cache Control header `'Cache-Control' : 'no-store'`
161
+
160
162
> After 0.9.4, we disabled `Chunked` transfer encoding by default, if you're going to use it, you should explicitly set header `Transfer-Encoding` to `Chunked`.
161
163
162
164
### Download example : Fetch files that needs authorization token
@@ -401,6 +403,30 @@ In `version >= 0.4.2` it is possible to know the upload/download progress. After
401
403
})
402
404
```
403
405
406
+
In `0.9.6`, you can specify an optional first argument which contains `count` and `interval` to limit progress event frequency (this will be done in native context in order to reduce RCT bridge overhead). Notice that `count` argument will not work if the server does not provide response content length.
After `0.7.0` it is possible to cancel a HTTP request. When the request cancel, it will definately throws an promise rejection, be sure to catch it.
@@ -709,10 +735,12 @@ Here's a [sample app](https://github.com/wkh237/rn-firebase-storage-upload-sampl
709
735
710
736
## Performance Tips
711
737
712
-
**Reduce RCT Bridge and BASE64 Overheard**
738
+
**Read Stream Event Overhead**
713
739
714
740
When reading data via `fs.readStream` the process seems blocking JS thread when file is large, it's because the default buffer size is quite small (4kb) which result in large amount of events triggered in JS thread, try to increase the buffer size (for example 100kb = 102400) and set a larger interval (which is introduced in 0.9.4 default value is 10ms) to limit the frequency.
715
741
742
+
**Reduce RCT Bridge and BASE64 Overhead**
743
+
716
744
React Native connects JS and Native context by passing JSON around React Native bridge, and there will be an overhead to convert data before they sent to each side. When data is large, this will be quite a performance impact to your app, it's recommended to use file storage instead of BASE64 if possible.The following chart shows how much faster when loading data from storage than BASE64 encoded string on iphone 6.
0 commit comments