|
@@ -1,5 +1,6 @@
|
1
|
1
|
package com.RNFetchBlob;
|
2
|
2
|
|
|
3
|
+import android.os.AsyncTask;
|
3
|
4
|
import android.os.Environment;
|
4
|
5
|
|
5
|
6
|
import com.facebook.react.bridge.Arguments;
|
|
@@ -31,41 +32,49 @@ public class RNFetchBlobFS {
|
31
|
32
|
}
|
32
|
33
|
|
33
|
34
|
// TODO : make it an AsyncTask
|
34
|
|
- public void readStream(String taskId, String encoding) {
|
35
|
|
- try {
|
36
|
|
-
|
37
|
|
- FileInputStream fs = mCtx.openFileInput(mCtx.getFilesDir() + "/fetchblobtmp_"+ taskId);
|
38
|
|
- byte[] buffer = new byte[1024];
|
39
|
|
- int cursor = 0;
|
40
|
|
- boolean error = false;
|
41
|
|
-
|
42
|
|
- if (encoding.toLowerCase() == "utf8") {
|
43
|
|
- while ((cursor = fs.read(buffer)) != -1) {
|
44
|
|
- String chunk = new String(buffer, 0, cursor, "UTF-8");
|
45
|
|
- emitFSData(taskId, "data", chunk);
|
46
|
|
- }
|
47
|
|
- } else if (encoding.toLowerCase() == "ascii") {
|
48
|
|
- while ((cursor = fs.read(buffer)) != -1) {
|
49
|
|
- String chunk = EncodingUtils.getAsciiString(buffer, 0, cursor);
|
50
|
|
- emitFSData(taskId, "data", chunk);
|
51
|
|
- }
|
52
|
|
- } else if (encoding.toLowerCase() == "base64") {
|
53
|
|
- while ((cursor = fs.read(buffer)) != -1) {
|
54
|
|
- emitFSData(taskId, "data", Base64.encodeToString(buffer, Base64.NO_WRAP));
|
|
35
|
+ public void readStream(final String path, String encoding) {
|
|
36
|
+ AsyncTask<String, Integer, Integer> task = new AsyncTask<String, Integer, Integer>() {
|
|
37
|
+ @Override
|
|
38
|
+ protected Integer doInBackground(String ... args) {
|
|
39
|
+ String path = args[0];
|
|
40
|
+ String encoding = args[1];
|
|
41
|
+ String eventName = "RNFetchBlobStream+" + path;
|
|
42
|
+ try {
|
|
43
|
+ FileInputStream fs = mCtx.openFileInput(mCtx.getFilesDir() + "/"+ path);
|
|
44
|
+ byte[] buffer = new byte[1024];
|
|
45
|
+ int cursor = 0;
|
|
46
|
+ boolean error = false;
|
|
47
|
+
|
|
48
|
+ if (encoding.toLowerCase() == "utf8") {
|
|
49
|
+ while ((cursor = fs.read(buffer)) != -1) {
|
|
50
|
+ String chunk = new String(buffer, 0, cursor, "UTF-8");
|
|
51
|
+ emitFSData(eventName, "data", chunk);
|
|
52
|
+ }
|
|
53
|
+ } else if (encoding.toLowerCase() == "ascii") {
|
|
54
|
+ while ((cursor = fs.read(buffer)) != -1) {
|
|
55
|
+ String chunk = EncodingUtils.getAsciiString(buffer, 0, cursor);
|
|
56
|
+ emitFSData(eventName, "data", chunk);
|
|
57
|
+ }
|
|
58
|
+ } else if (encoding.toLowerCase() == "base64") {
|
|
59
|
+ while ((cursor = fs.read(buffer)) != -1) {
|
|
60
|
+ emitFSData(eventName, "data", Base64.encodeToString(buffer, Base64.NO_WRAP));
|
|
61
|
+ }
|
|
62
|
+ } else {
|
|
63
|
+ String msg = "unrecognized encoding `" + encoding + "`";
|
|
64
|
+ emitFSData(eventName, "error", msg);
|
|
65
|
+ error = true;
|
|
66
|
+ }
|
|
67
|
+
|
|
68
|
+ if(!error)
|
|
69
|
+ emitFSData(eventName, "end", "");
|
|
70
|
+
|
|
71
|
+ } catch (Exception err) {
|
|
72
|
+ emitFSData(eventName, "error", err.getLocalizedMessage());
|
55
|
73
|
}
|
56
|
|
- } else {
|
57
|
|
- String msg = "unrecognized encoding `" + encoding + "`";
|
58
|
|
- emitFSData(taskId, "error", msg);
|
59
|
|
- error = true;
|
|
74
|
+ return null;
|
60
|
75
|
}
|
61
|
|
-
|
62
|
|
- if(!error)
|
63
|
|
- emitFSData(taskId, "end", "");
|
64
|
|
-
|
65
|
|
- } catch (Exception err) {
|
66
|
|
- emitFSData(taskId, "error", err.getLocalizedMessage());
|
67
|
|
- }
|
68
|
|
-
|
|
76
|
+ };
|
|
77
|
+ task.execute(path, encoding);
|
69
|
78
|
}
|
70
|
79
|
|
71
|
80
|
void emitFSData(String taskId, String event, String data) {
|