From a7c423f32c58655030712e4f212111dcc6a6cfec Mon Sep 17 00:00:00 2001 From: thinknet Date: Mon, 18 Jul 2016 14:40:06 +0800 Subject: [PATCH 1/5] change for jzfp change for jzfp --- .../com/yoloci/fileupload/FileUploadModule.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java b/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java index 1c01743..30ed2bc 100644 --- a/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java +++ b/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java @@ -62,7 +62,7 @@ public void upload(final ReadableMap options, final Callback callback) { int bytesRead, bytesAvailable, bufferSize; byte[] buffer; - int maxBufferSize = 1*1024*1024; + int maxBufferSize = 1024*1024*1024; try { @@ -99,7 +99,8 @@ public void upload(final ReadableMap options, final Callback callback) { String key = fieldIterator.nextKey(); outputStream.writeBytes("Content-Disposition: form-data; name=\"" + key + "\"" + lineEnd + lineEnd); - outputStream.writeBytes(fields.getString(key)); +// outputStream.writeBytes(fields.getString(key)); + outputStream.write(fields.getString(key).getBytes()); outputStream.writeBytes(lineEnd); } @@ -107,13 +108,17 @@ public void upload(final ReadableMap options, final Callback callback) { for (int i = 0; i < files.size(); i++) { ReadableMap file = files.getMap(i); + String name = file.getString("name"); String filename = file.getString("filename"); String filepath = file.getString("filepath"); + String filetype = file.getString("filetype"); filepath = filepath.replace("file://", ""); fileInputStream = new FileInputStream(filepath); outputStream.writeBytes(twoHyphens + boundary + lineEnd); - outputStream.writeBytes("Content-Disposition: form-data; name=\"image\";filename=\"" + filename + "\"" + lineEnd); + //outputStream.writeBytes("Content-Disposition: form-data; name=\"image\";filename=\"" + filename + "\"" + lineEnd); + outputStream.writeBytes("Content-Disposition: form-data; name=\"" + name + "\";filename=\"" + filename + "\"" + lineEnd); + outputStream.writeBytes("Content-Type: " + filetype + lineEnd); outputStream.writeBytes(lineEnd); bytesAvailable = fileInputStream.available(); @@ -139,7 +144,7 @@ public void upload(final ReadableMap options, final Callback callback) { int serverResponseCode = connection.getResponseCode(); String serverResponseMessage = connection.getResponseMessage(); - if (serverResponseCode != 200) { + if (serverResponseCode > 206) { fileInputStream.close(); outputStream.flush(); outputStream.close(); From 3be1f1845907d1a103252840df598a1157e4cfb2 Mon Sep 17 00:00:00 2001 From: thinknet Date: Wed, 20 Jul 2016 23:19:35 +0800 Subject: [PATCH 2/5] async for up;oad async for upload --- .../yoloci/fileupload/FileUploadModule.java | 6 +- .../java/com/yoloci/fileupload/Uploader.java | 176 ++++++++++++++++++ 2 files changed, 180 insertions(+), 2 deletions(-) create mode 100644 android/src/main/java/com/yoloci/fileupload/Uploader.java diff --git a/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java b/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java index 30ed2bc..0a43e91 100644 --- a/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java +++ b/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java @@ -36,7 +36,7 @@ public FileUploadModule(ReactApplicationContext reactContext) { @ReactMethod public void upload(final ReadableMap options, final Callback callback) { - String lineEnd = "\r\n"; + /*String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; @@ -176,6 +176,8 @@ public void upload(final ReadableMap options, final Callback callback) { } catch(Exception ex) { callback.invoke("Error happened: " + ex.getMessage(), null); - } + }*/ + Uploader uploader = new Uploader(); + uploader.execute(options); } } diff --git a/android/src/main/java/com/yoloci/fileupload/Uploader.java b/android/src/main/java/com/yoloci/fileupload/Uploader.java new file mode 100644 index 0000000..63c0512 --- /dev/null +++ b/android/src/main/java/com/yoloci/fileupload/Uploader.java @@ -0,0 +1,176 @@ +package com.yoloci.fileupload; + +import android.os.AsyncTask; +import android.os.Bundle; + +import com.facebook.react.bridge.Arguments; +import com.facebook.react.bridge.Callback; +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.bridge.ReadableMapKeySetIterator; +import com.facebook.react.bridge.WritableMap; + +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.Console; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +/** + * Created by kys on 7/20/2016. + */ +public class Uploader extends AsyncTask { + + @Override + protected String doInBackground(ReadableMap... params) { + this.upload(params[0]); + return ""; + } + + public void upload(final ReadableMap options) { + String lineEnd = "\r\n"; + String twoHyphens = "--"; + String boundary = "*****"; + + String uploadUrl = options.getString("uploadUrl"); + String method; + if (options.hasKey("method")) { + method = options.getString("method"); + } else { + method = "POST"; + } + + ReadableMap headers = options.getMap("headers"); + ReadableArray files = options.getArray("files"); + ReadableMap fields = options.getMap("fields"); + + + + HttpURLConnection connection = null; + DataOutputStream outputStream = null; + DataInputStream inputStream = null; + URL connectURL = null; + FileInputStream fileInputStream = null; + + int bytesRead, bytesAvailable, bufferSize; + byte[] buffer; + int maxBufferSize = 1024*1024*1024; + + try { + + connectURL = new URL(uploadUrl); + + + connection = (HttpURLConnection) connectURL.openConnection(); + + // Allow Inputs & Outputs. + connection.setDoInput(true); + connection.setDoOutput(true); + connection.setUseCaches(false); + + connection.setRequestMethod(method); + + // set headers + ReadableMapKeySetIterator iterator = headers.keySetIterator(); + while (iterator.hasNextKey()) { + String key = iterator.nextKey(); + connection.setRequestProperty(key, headers.getString(key)); + } + + + + connection.setRequestProperty("Connection", "Keep-Alive"); + connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); + + outputStream = new DataOutputStream( connection.getOutputStream() ); + + // set fields + ReadableMapKeySetIterator fieldIterator = fields.keySetIterator(); + while (fieldIterator.hasNextKey()) { + outputStream.writeBytes(twoHyphens + boundary + lineEnd); + + String key = fieldIterator.nextKey(); + outputStream.writeBytes("Content-Disposition: form-data; name=\"" + key + "\"" + lineEnd + lineEnd); +// outputStream.writeBytes(fields.getString(key)); + outputStream.write(fields.getString(key).getBytes()); + outputStream.writeBytes(lineEnd); + } + + + for (int i = 0; i < files.size(); i++) { + + ReadableMap file = files.getMap(i); + String name = file.getString("name"); + String filename = file.getString("filename"); + String filepath = file.getString("filepath"); + String filetype = file.getString("filetype"); + filepath = filepath.replace("file://", ""); + fileInputStream = new FileInputStream(filepath); + + outputStream.writeBytes(twoHyphens + boundary + lineEnd); + //outputStream.writeBytes("Content-Disposition: form-data; name=\"image\";filename=\"" + filename + "\"" + lineEnd); + outputStream.writeBytes("Content-Disposition: form-data; name=\"" + name + "\";filename=\"" + filename + "\"" + lineEnd); + outputStream.writeBytes("Content-Type: " + filetype + lineEnd); + outputStream.writeBytes(lineEnd); + + bytesAvailable = fileInputStream.available(); + bufferSize = Math.min(bytesAvailable, maxBufferSize); + buffer = new byte[bufferSize]; + + // Read file + bytesRead = fileInputStream.read(buffer, 0, bufferSize); + + while (bytesRead > 0) { + outputStream.write(buffer, 0, bufferSize); + bytesAvailable = fileInputStream.available(); + bufferSize = Math.min(bytesAvailable, maxBufferSize); + bytesRead = fileInputStream.read(buffer, 0, bufferSize); + } + + outputStream.writeBytes(lineEnd); + } + + outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); + + // Responses from the server (code and message) + + int serverResponseCode = connection.getResponseCode(); + String serverResponseMessage = connection.getResponseMessage(); + if (serverResponseCode > 206) { + fileInputStream.close(); + outputStream.flush(); + outputStream.close(); + //callback.invoke("Error happened: " + serverResponseMessage, null); + } else { + BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); + StringBuilder sb = new StringBuilder(); + String line; + while ((line = br.readLine()) != null) { + sb.append(line); + } + br.close(); + String data = sb.toString(); + JSONObject mainObject = new JSONObject(); + mainObject.put("data", data); + mainObject.put("status", serverResponseCode); + + BundleJSONConverter bjc = new BundleJSONConverter(); + Bundle bundle = bjc.convertToBundle(mainObject); + WritableMap map = Arguments.fromBundle(bundle); + + fileInputStream.close(); + outputStream.flush(); + outputStream.close(); + //callback.invoke(null, map); + //Console.log(map.toString()); + } + } catch(Exception ex) { + //callback.invoke("Error happened: " + ex.getMessage(), null); + } + } +} From 56cd564518d35ff55b47f498c8be66eec516106f Mon Sep 17 00:00:00 2001 From: thinknet Date: Thu, 21 Jul 2016 10:48:41 +0800 Subject: [PATCH 3/5] send upload task end event send upload task end event --- .../yoloci/fileupload/FileUploadModule.java | 193 ++++-------------- .../com/yoloci/fileupload/UploadParams.java | 29 +++ .../com/yoloci/fileupload/UploadResult.java | 10 + .../java/com/yoloci/fileupload/Uploader.java | 64 +++--- 4 files changed, 116 insertions(+), 180 deletions(-) create mode 100644 android/src/main/java/com/yoloci/fileupload/UploadParams.java create mode 100644 android/src/main/java/com/yoloci/fileupload/UploadResult.java diff --git a/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java b/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java index 0a43e91..d79a34c 100644 --- a/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java +++ b/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java @@ -1,27 +1,18 @@ package com.yoloci.fileupload; -import android.os.Bundle; +import android.support.annotation.Nullable; import com.facebook.react.bridge.Arguments; -import com.facebook.react.bridge.ReadableArray; -import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.bridge.ReadableMapKeySetIterator; +import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.bridge.Callback; - -import java.io.DataInputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.io.DataOutputStream; -import java.io.BufferedReader; -import java.io.InputStreamReader; - +import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.WritableMap; -import java.io.FileInputStream; +import com.facebook.react.modules.core.RCTNativeAppEventEmitter; -import org.json.JSONObject; +import java.util.Map; public class FileUploadModule extends ReactContextBaseJavaModule { @@ -34,150 +25,54 @@ public FileUploadModule(ReactApplicationContext reactContext) { super(reactContext); } + private void sendEvent(ReactContext reactContext, String eventName, @Nullable WritableMap params) { + reactContext + .getJSModule(RCTNativeAppEventEmitter.class) + .emit(eventName, params); + } + @ReactMethod public void upload(final ReadableMap options, final Callback callback) { - /*String lineEnd = "\r\n"; - String twoHyphens = "--"; - String boundary = "*****"; - - String uploadUrl = options.getString("uploadUrl"); - String method; - if (options.hasKey("method")) { - method = options.getString("method"); - } else { - method = "POST"; - } - - ReadableMap headers = options.getMap("headers"); - ReadableArray files = options.getArray("files"); - ReadableMap fields = options.getMap("fields"); - - - - HttpURLConnection connection = null; - DataOutputStream outputStream = null; - DataInputStream inputStream = null; - URL connectURL = null; - FileInputStream fileInputStream = null; - - int bytesRead, bytesAvailable, bufferSize; - byte[] buffer; - int maxBufferSize = 1024*1024*1024; - try { - - connectURL = new URL(uploadUrl); - - - connection = (HttpURLConnection) connectURL.openConnection(); - - // Allow Inputs & Outputs. - connection.setDoInput(true); - connection.setDoOutput(true); - connection.setUseCaches(false); - - connection.setRequestMethod(method); - - // set headers - ReadableMapKeySetIterator iterator = headers.keySetIterator(); - while (iterator.hasNextKey()) { - String key = iterator.nextKey(); - connection.setRequestProperty(key, headers.getString(key)); - } - - - - connection.setRequestProperty("Connection", "Keep-Alive"); - connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); - - outputStream = new DataOutputStream( connection.getOutputStream() ); - - // set fields - ReadableMapKeySetIterator fieldIterator = fields.keySetIterator(); - while (fieldIterator.hasNextKey()) { - outputStream.writeBytes(twoHyphens + boundary + lineEnd); - - String key = fieldIterator.nextKey(); - outputStream.writeBytes("Content-Disposition: form-data; name=\"" + key + "\"" + lineEnd + lineEnd); -// outputStream.writeBytes(fields.getString(key)); - outputStream.write(fields.getString(key).getBytes()); - outputStream.writeBytes(lineEnd); - } - - - for (int i = 0; i < files.size(); i++) { - - ReadableMap file = files.getMap(i); - String name = file.getString("name"); - String filename = file.getString("filename"); - String filepath = file.getString("filepath"); - String filetype = file.getString("filetype"); - filepath = filepath.replace("file://", ""); - fileInputStream = new FileInputStream(filepath); - - outputStream.writeBytes(twoHyphens + boundary + lineEnd); - //outputStream.writeBytes("Content-Disposition: form-data; name=\"image\";filename=\"" + filename + "\"" + lineEnd); - outputStream.writeBytes("Content-Disposition: form-data; name=\"" + name + "\";filename=\"" + filename + "\"" + lineEnd); - outputStream.writeBytes("Content-Type: " + filetype + lineEnd); - outputStream.writeBytes(lineEnd); - - bytesAvailable = fileInputStream.available(); - bufferSize = Math.min(bytesAvailable, maxBufferSize); - buffer = new byte[bufferSize]; - - // Read file - bytesRead = fileInputStream.read(buffer, 0, bufferSize); - - while (bytesRead > 0) { - outputStream.write(buffer, 0, bufferSize); - bytesAvailable = fileInputStream.available(); - bufferSize = Math.min(bytesAvailable, maxBufferSize); - bytesRead = fileInputStream.read(buffer, 0, bufferSize); + UploadParams params = new UploadParams(); + params.options = options; + + params.onTaskCompleted = new UploadParams.OnTaskCompleted() { + public void onTaskCompleted(UploadResult res) { + //upload success + if(res.exception == null) { + WritableMap infoMap = Arguments.createMap(); + ////infoMap.putInt("jobId", jobId); + infoMap.putInt("statusCode", res.statusCode); + ////infoMap.putInt("bytesWritten", res.bytesWritten); + callback.invoke(null, infoMap); + } } + }; - outputStream.writeBytes(lineEnd); - } - - outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); + params.onUploadBegin = new UploadParams.OnUploadBegin() { + public void onUploadBegin(int statusCode, int contentLength, Map headers) { - // Responses from the server (code and message) - - int serverResponseCode = connection.getResponseCode(); - String serverResponseMessage = connection.getResponseMessage(); - if (serverResponseCode > 206) { - fileInputStream.close(); - outputStream.flush(); - outputStream.close(); - callback.invoke("Error happened: " + serverResponseMessage, null); - } else { - BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); - StringBuilder sb = new StringBuilder(); - String line; - while ((line = br.readLine()) != null) { - sb.append(line); } - br.close(); - String data = sb.toString(); - JSONObject mainObject = new JSONObject(); - mainObject.put("data", data); - mainObject.put("status", serverResponseCode); - - BundleJSONConverter bjc = new BundleJSONConverter(); - Bundle bundle = bjc.convertToBundle(mainObject); - WritableMap map = Arguments.fromBundle(bundle); + }; - fileInputStream.close(); - outputStream.flush(); - outputStream.close(); - callback.invoke(null, map); - } + params.onUploadProgress = new UploadParams.OnUploadProgress() { + public void onUploadProgress(int contentLength, int bytesWritten) { + } + }; + Uploader uploader = new Uploader(); + uploader.execute(params); + } catch (Exception ex) { + ex.printStackTrace(); + callback.invoke(makeErrorPayload(ex)); + } + } - } catch(Exception ex) { - callback.invoke("Error happened: " + ex.getMessage(), null); - }*/ - Uploader uploader = new Uploader(); - uploader.execute(options); + private WritableMap makeErrorPayload(Exception ex) { + WritableMap error = Arguments.createMap(); + error.putString("message", ex.getMessage()); + return error; } } diff --git a/android/src/main/java/com/yoloci/fileupload/UploadParams.java b/android/src/main/java/com/yoloci/fileupload/UploadParams.java new file mode 100644 index 0000000..a91a2db --- /dev/null +++ b/android/src/main/java/com/yoloci/fileupload/UploadParams.java @@ -0,0 +1,29 @@ +package com.yoloci.fileupload; + +import java.io.File; +import java.net.URL; +import java.util.*; + +import com.facebook.react.bridge.ReadableMap; + +/** + * Created by kys on 7/21/2016. + */ +public class UploadParams { + public interface OnTaskCompleted { + void onTaskCompleted(UploadResult res); + } + + public interface OnUploadBegin { + void onUploadBegin(int statusCode, int contentLength, Map headers); + } + + public interface OnUploadProgress { + void onUploadProgress(int contentLength, int bytesWritten); + } + + public ReadableMap options; + public OnTaskCompleted onTaskCompleted; + public OnUploadBegin onUploadBegin; + public OnUploadProgress onUploadProgress; +} diff --git a/android/src/main/java/com/yoloci/fileupload/UploadResult.java b/android/src/main/java/com/yoloci/fileupload/UploadResult.java new file mode 100644 index 0000000..4acdf7e --- /dev/null +++ b/android/src/main/java/com/yoloci/fileupload/UploadResult.java @@ -0,0 +1,10 @@ +package com.yoloci.fileupload; + +/** + * Created by kys on 7/21/2016. + */ +public class UploadResult { + public int statusCode; + public int bytesWritten; + public Exception exception; +} diff --git a/android/src/main/java/com/yoloci/fileupload/Uploader.java b/android/src/main/java/com/yoloci/fileupload/Uploader.java index 63c0512..084ba54 100644 --- a/android/src/main/java/com/yoloci/fileupload/Uploader.java +++ b/android/src/main/java/com/yoloci/fileupload/Uploader.java @@ -4,7 +4,6 @@ import android.os.Bundle; import com.facebook.react.bridge.Arguments; -import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.ReadableMapKeySetIterator; @@ -13,41 +12,54 @@ import org.json.JSONObject; import java.io.BufferedReader; -import java.io.Console; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; +import java.util.concurrent.atomic.AtomicBoolean; /** * Created by kys on 7/20/2016. */ -public class Uploader extends AsyncTask { +public class Uploader extends AsyncTask { + + private UploadParams mParam; + private AtomicBoolean mAbort = new AtomicBoolean(false); @Override - protected String doInBackground(ReadableMap... params) { - this.upload(params[0]); - return ""; + protected UploadResult doInBackground(UploadParams... params) { + mParam = params[0]; + UploadResult res = new UploadResult(); + try { + this.upload(mParam, res); + mParam.onTaskCompleted.onTaskCompleted(res); + + } catch (Exception ex) { + res.exception = ex; + mParam.onTaskCompleted.onTaskCompleted(res); + return res; + } + return res; } - public void upload(final ReadableMap options) { + public void upload(final UploadParams options, UploadResult res) { String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; - String uploadUrl = options.getString("uploadUrl"); + String uploadUrl = options.options.getString("uploadUrl"); String method; - if (options.hasKey("method")) { - method = options.getString("method"); + if (options.options.hasKey("method")) { + method = options.options.getString("method"); } else { method = "POST"; } - ReadableMap headers = options.getMap("headers"); - ReadableArray files = options.getArray("files"); - ReadableMap fields = options.getMap("fields"); + ReadableMap headers = options.options.getMap("headers"); + ReadableArray files = options.options.getArray("files"); + ReadableMap fields = options.options.getMap("fields"); @@ -60,19 +72,14 @@ public void upload(final ReadableMap options) { int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1024*1024*1024; - try { - connectURL = new URL(uploadUrl); - - connection = (HttpURLConnection) connectURL.openConnection(); // Allow Inputs & Outputs. connection.setDoInput(true); connection.setDoOutput(true); connection.setUseCaches(false); - connection.setRequestMethod(method); // set headers @@ -81,9 +88,6 @@ public void upload(final ReadableMap options) { String key = iterator.nextKey(); connection.setRequestProperty(key, headers.getString(key)); } - - - connection.setRequestProperty("Connection", "Keep-Alive"); connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); @@ -96,14 +100,11 @@ public void upload(final ReadableMap options) { String key = fieldIterator.nextKey(); outputStream.writeBytes("Content-Disposition: form-data; name=\"" + key + "\"" + lineEnd + lineEnd); -// outputStream.writeBytes(fields.getString(key)); outputStream.write(fields.getString(key).getBytes()); outputStream.writeBytes(lineEnd); } - for (int i = 0; i < files.size(); i++) { - ReadableMap file = files.getMap(i); String name = file.getString("name"); String filename = file.getString("filename"); @@ -121,20 +122,16 @@ public void upload(final ReadableMap options) { bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; - // Read file bytesRead = fileInputStream.read(buffer, 0, bufferSize); - while (bytesRead > 0) { outputStream.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } - outputStream.writeBytes(lineEnd); } - outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); // Responses from the server (code and message) @@ -145,7 +142,7 @@ public void upload(final ReadableMap options) { fileInputStream.close(); outputStream.flush(); outputStream.close(); - //callback.invoke("Error happened: " + serverResponseMessage, null); + res.statusCode = serverResponseCode; } else { BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder sb = new StringBuilder(); @@ -166,11 +163,16 @@ public void upload(final ReadableMap options) { fileInputStream.close(); outputStream.flush(); outputStream.close(); - //callback.invoke(null, map); - //Console.log(map.toString()); + res.statusCode = serverResponseCode; } } catch(Exception ex) { //callback.invoke("Error happened: " + ex.getMessage(), null); } } + + @Override + protected void onProgressUpdate(int[]... values) { + super.onProgressUpdate(values); + mParam.onUploadProgress.onUploadProgress(values[0][0], values[0][1]); + } } From 49399454dc21d44097ec870fc0cd748b5a233b1f Mon Sep 17 00:00:00 2001 From: thinknet Date: Thu, 21 Jul 2016 15:40:17 +0800 Subject: [PATCH 4/5] remove upload begin remove upload begin --- .../java/com/yoloci/fileupload/FileUploadModule.java | 12 ------------ .../java/com/yoloci/fileupload/UploadParams.java | 2 +- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java b/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java index d79a34c..f0bc410 100644 --- a/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java +++ b/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java @@ -50,18 +50,6 @@ public void onTaskCompleted(UploadResult res) { } }; - params.onUploadBegin = new UploadParams.OnUploadBegin() { - public void onUploadBegin(int statusCode, int contentLength, Map headers) { - - } - }; - - params.onUploadProgress = new UploadParams.OnUploadProgress() { - public void onUploadProgress(int contentLength, int bytesWritten) { - - } - }; - Uploader uploader = new Uploader(); uploader.execute(params); } catch (Exception ex) { diff --git a/android/src/main/java/com/yoloci/fileupload/UploadParams.java b/android/src/main/java/com/yoloci/fileupload/UploadParams.java index a91a2db..4cfd0ce 100644 --- a/android/src/main/java/com/yoloci/fileupload/UploadParams.java +++ b/android/src/main/java/com/yoloci/fileupload/UploadParams.java @@ -15,7 +15,7 @@ public interface OnTaskCompleted { } public interface OnUploadBegin { - void onUploadBegin(int statusCode, int contentLength, Map headers); + void onUploadBegin(); } public interface OnUploadProgress { From c47266563e6444f91954cab7ccce59ed33a4389c Mon Sep 17 00:00:00 2001 From: thinknet Date: Sun, 31 Jul 2016 18:41:58 +0800 Subject: [PATCH 5/5] get user response get user response --- .../src/main/java/com/yoloci/fileupload/FileUploadModule.java | 1 + android/src/main/java/com/yoloci/fileupload/UploadResult.java | 1 + android/src/main/java/com/yoloci/fileupload/Uploader.java | 2 ++ 3 files changed, 4 insertions(+) diff --git a/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java b/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java index f0bc410..2f8671e 100644 --- a/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java +++ b/android/src/main/java/com/yoloci/fileupload/FileUploadModule.java @@ -44,6 +44,7 @@ public void onTaskCompleted(UploadResult res) { WritableMap infoMap = Arguments.createMap(); ////infoMap.putInt("jobId", jobId); infoMap.putInt("statusCode", res.statusCode); + infoMap.putString("responseData", res.responseStr); ////infoMap.putInt("bytesWritten", res.bytesWritten); callback.invoke(null, infoMap); } diff --git a/android/src/main/java/com/yoloci/fileupload/UploadResult.java b/android/src/main/java/com/yoloci/fileupload/UploadResult.java index 4acdf7e..6c4529f 100644 --- a/android/src/main/java/com/yoloci/fileupload/UploadResult.java +++ b/android/src/main/java/com/yoloci/fileupload/UploadResult.java @@ -6,5 +6,6 @@ public class UploadResult { public int statusCode; public int bytesWritten; + public String responseStr; public Exception exception; } diff --git a/android/src/main/java/com/yoloci/fileupload/Uploader.java b/android/src/main/java/com/yoloci/fileupload/Uploader.java index 084ba54..a8dccb4 100644 --- a/android/src/main/java/com/yoloci/fileupload/Uploader.java +++ b/android/src/main/java/com/yoloci/fileupload/Uploader.java @@ -143,6 +143,7 @@ public void upload(final UploadParams options, UploadResult res) { outputStream.flush(); outputStream.close(); res.statusCode = serverResponseCode; + res.responseStr = ""; } else { BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder sb = new StringBuilder(); @@ -164,6 +165,7 @@ public void upload(final UploadParams options, UploadResult res) { outputStream.flush(); outputStream.close(); res.statusCode = serverResponseCode; + res.responseStr = data; } } catch(Exception ex) { //callback.invoke("Error happened: " + ex.getMessage(), null);