@@ -138,18 +138,28 @@ static public void writeFile(String path, ReadableArray data, final boolean appe
138
138
* @param promise
139
139
*/
140
140
static public void readFile (String path , String encoding , final Promise promise ) {
141
- path = normalizePath (path );
141
+ String resolved = normalizePath (path );
142
+ if (resolved != null )
143
+ path = resolved ;
142
144
try {
143
145
byte [] bytes ;
144
146
145
- if (path .startsWith (RNFetchBlobConst .FILE_PREFIX_BUNDLE_ASSET )) {
147
+ if (resolved != null && resolved .startsWith (RNFetchBlobConst .FILE_PREFIX_BUNDLE_ASSET )) {
146
148
String assetName = path .replace (RNFetchBlobConst .FILE_PREFIX_BUNDLE_ASSET , "" );
147
149
long length = RNFetchBlob .RCTContext .getAssets ().openFd (assetName ).getLength ();
148
150
bytes = new byte [(int ) length ];
149
151
InputStream in = RNFetchBlob .RCTContext .getAssets ().open (assetName );
150
152
in .read (bytes , 0 , (int ) length );
151
153
in .close ();
152
154
}
155
+ // issue 287
156
+ else if (resolved == null ) {
157
+ InputStream in = RNFetchBlob .RCTContext .getContentResolver ().openInputStream (Uri .parse (path ));
158
+ int length = (int ) in .available ();
159
+ bytes = new byte [length ];
160
+ in .read (bytes );
161
+ in .close ();
162
+ }
153
163
else {
154
164
File f = new File (path );
155
165
int length = (int ) f .length ();
@@ -226,17 +236,24 @@ static public String getTmpPath(ReactApplicationContext ctx, String taskId) {
226
236
* @param bufferSize Buffer size of read stream, default to 4096 (4095 when encode is `base64`)
227
237
*/
228
238
public void readStream (String path , String encoding , int bufferSize , int tick , final String streamId ) {
229
- path = normalizePath (path );
239
+ String resolved = normalizePath (path );
240
+ if (resolved != null )
241
+ path = resolved ;
230
242
try {
231
243
232
244
int chunkSize = encoding .equalsIgnoreCase ("base64" ) ? 4095 : 4096 ;
233
245
if (bufferSize > 0 )
234
246
chunkSize = bufferSize ;
235
247
236
248
InputStream fs ;
237
- if (path .startsWith (RNFetchBlobConst .FILE_PREFIX_BUNDLE_ASSET )) {
238
- fs = RNFetchBlob .RCTContext .getAssets ()
239
- .open (path .replace (RNFetchBlobConst .FILE_PREFIX_BUNDLE_ASSET , "" ));
249
+
250
+ if (resolved != null && path .startsWith (RNFetchBlobConst .FILE_PREFIX_BUNDLE_ASSET )) {
251
+ fs = RNFetchBlob .RCTContext .getAssets ().open (path .replace (RNFetchBlobConst .FILE_PREFIX_BUNDLE_ASSET , "" ));
252
+
253
+ }
254
+ // fix issue 287
255
+ else if (resolved == null ) {
256
+ fs = RNFetchBlob .RCTContext .getContentResolver ().openInputStream (Uri .parse (path ));
240
257
}
241
258
else {
242
259
fs = new FileInputStream (new File (path ));
0 commit comments