Skip to content
This repository was archived by the owner on Mar 16, 2019. It is now read-only.

Commit 5e5a461

Browse files
committed
Fix unicode write file issue #73
1 parent 4ab1ef9 commit 5e5a461

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

src/android/src/main/java/com/RNFetchBlob/RNFetchBlobFS.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,10 @@ protected Integer doInBackground(String... args) {
9494
}
9595
FileInputStream fin = new FileInputStream(src);
9696
byte [] buffer = new byte [10240];
97-
int read = fin.read(buffer);
98-
written = read;
99-
while(read > 0) {
97+
int read;
98+
written = 0;
99+
while((read = fin.read(buffer)) > 0) {
100100
fout.write(buffer, 0, read);
101-
read = fin.read(buffer);
102101
written += read;
103102
}
104103
fin.close();
@@ -798,8 +797,9 @@ else if(encoding.toLowerCase().contains("base64")) {
798797
byte [] b = Base64.decode(data, Base64.NO_WRAP);
799798
if(encoding.toLowerCase().contains("urlencode")) {
800799
try {
801-
b = URLDecoder.decode(new String(b), "UTF-8").getBytes();
802-
} catch (UnsupportedEncodingException e) {
800+
String encoded = URLDecoder.decode(new String(b), "UTF-8");
801+
b = encoded.getBytes();
802+
} catch (Exception e) {
803803
e.printStackTrace();
804804
}
805805
}

src/android/src/main/java/com/RNFetchBlob/RNFetchBlobReq.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ enum ResponseType {
9898
public boolean reportUploadProgress = false;
9999

100100
public RNFetchBlobReq(ReadableMap options, String taskId, String method, String url, ReadableMap headers, String body, ReadableArray arrayBody, final Callback callback) {
101-
this.method = method;
101+
this.method = method.toUpperCase();
102102
this.options = new RNFetchBlobConfig(options);
103103
this.taskId = taskId;
104104
this.url = url;
@@ -404,14 +404,13 @@ private void done(Response resp) {
404404
String dest = RNFetchBlobFS.getTmpPath(ctx, taskId);
405405
InputStream ins = resp.body().byteStream();
406406
FileOutputStream os = new FileOutputStream(new File(dest));
407+
int read;
407408
byte [] buffer = new byte[10240];
408-
int read = ins.read(buffer);
409-
os.write(buffer,0,read);
410-
while(read > 0) {
411-
os.write(buffer,0,read);
412-
read = ins.read(buffer);
409+
while ((read = ins.read(buffer)) != -1) {
410+
os.write(buffer, 0, read);
413411
}
414412
ins.close();
413+
os.flush();
415414
os.close();
416415
callback.invoke(null, null, dest);
417416
}

src/ios/RNFetchBlobFS.m

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,10 @@ + (void) writeFile:(NSString *)path encoding:(NSString *)encoding data:(NSString
229229
if([encoding containsString:@"urlencode"])
230230
{
231231
NSString * decode = [[[NSString alloc] initWithData:content encoding:NSUTF8StringEncoding] stringByRemovingPercentEncoding];
232-
content = [decode dataUsingEncoding:NSUTF8StringEncoding];
232+
if(decode != nil)
233+
{
234+
content = [decode dataUsingEncoding:NSUTF8StringEncoding];
235+
}
233236
}
234237
}
235238
else if([encoding isEqualToString:@"uri"]) {

0 commit comments

Comments
 (0)