diff --git a/.idea/misc.xml b/.idea/misc.xml index fbb68289..5d199810 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/Aria/src/main/java/com/arialyy/aria/core/command/StartCmd.java b/Aria/src/main/java/com/arialyy/aria/core/command/StartCmd.java index 9c2f6124..30d03d91 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/command/StartCmd.java +++ b/Aria/src/main/java/com/arialyy/aria/core/command/StartCmd.java @@ -16,6 +16,7 @@ package com.arialyy.aria.core.command; +import android.util.Log; import com.arialyy.aria.core.inf.ITask; import com.arialyy.aria.core.inf.ITaskEntity; @@ -30,6 +31,7 @@ class StartCmd extends AbsCmd { } @Override public void executeCmd() { + Log.d(TAG, "startCmd"); ITask task = mQueue.getTask(mEntity.getEntity()); if (task == null) { task = mQueue.createTask(mTargetName, mEntity); diff --git a/Aria/src/main/java/com/arialyy/aria/core/queue/UploadTaskQueue.java b/Aria/src/main/java/com/arialyy/aria/core/queue/UploadTaskQueue.java index 9b7c061a..7d9e0205 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/queue/UploadTaskQueue.java +++ b/Aria/src/main/java/com/arialyy/aria/core/queue/UploadTaskQueue.java @@ -42,6 +42,7 @@ public class UploadTaskQueue extends AbsTaskQueue - * @param uploadFile a File to be uploaded - * @throws IOException - */ - public void addFilePart(String fieldName, File uploadFile) - throws IOException { - String fileName = uploadFile.getName(); - writer.append("--" + boundary).append(LINE_FEED); - writer.append( - "Content-Disposition: form-data; name=\"" + fieldName - + "\"; filename=\"" + fileName + "\"") - .append(LINE_FEED); - writer.append( - "Content-Type: " - + URLConnection.guessContentTypeFromName(fileName)) - .append(LINE_FEED); - writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED); - writer.append(LINE_FEED); - writer.flush(); - - FileInputStream inputStream = new FileInputStream(uploadFile); - byte[] buffer = new byte[4096]; - int bytesRead = -1; - while ((bytesRead = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bytesRead); - } - outputStream.flush(); - inputStream.close(); - - writer.append(LINE_FEED); - writer.flush(); - } - - /** - * Adds a header field to the request. - * @param name - name of the header field - * @param value - value of the header field - */ - public void addHeaderField(String name, String value) { - writer.append(name + ": " + value).append(LINE_FEED); - writer.flush(); + private final String boundary; + private static final String LINE_FEED = "\r\n"; + private HttpURLConnection httpConn; + private String charset; + private OutputStream outputStream; + private PrintWriter writer; + + /** + * This constructor initializes a new HTTP POST request with content type + * is set to multipart/form-data + * + * @throws IOException + */ + public MultipartUtility(String requestURL, String charset) throws IOException { + this.charset = charset; + + // creates a unique boundary based on time stamp + boundary = "===" + System.currentTimeMillis() + "==="; + + URL url = new URL(requestURL); + httpConn = (HttpURLConnection) url.openConnection(); + httpConn.setUseCaches(false); + httpConn.setDoOutput(true); // indicates POST method + httpConn.setDoInput(true); + httpConn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); + //httpConn.setRequestProperty("User-Agent", "CodeJava Agent"); + //httpConn.setRequestProperty("Test", "Bonjour"); + outputStream = httpConn.getOutputStream(); + writer = new PrintWriter(new OutputStreamWriter(outputStream, charset), true); + } + + /** + * Adds a form field to the request + * + * @param name field name + * @param value field value + */ + public void addFormField(String name, String value) { + writer.append("--" + boundary).append(LINE_FEED); + writer.append("Content-Disposition: form-data; name=\"" + name + "\"").append(LINE_FEED); + writer.append("Content-Type: text/plain; charset=" + charset).append(LINE_FEED); + writer.append(LINE_FEED); + writer.append(value).append(LINE_FEED); + writer.flush(); + } + + /** + * Adds a upload file section to the request + * + * @param fieldName name attribute in + * @param uploadFile a File to be uploaded + * @throws IOException + */ + public void addFilePart(String fieldName, File uploadFile) throws IOException { + String fileName = uploadFile.getName(); + writer.append("--" + boundary).append(LINE_FEED); + writer.append( + "Content-Disposition: form-data; name=\"" + fieldName + "\"; filename=\"" + fileName + "\"") + .append(LINE_FEED); + writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(fileName)) + .append(LINE_FEED); + writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED); + writer.append(LINE_FEED); + writer.flush(); + + FileInputStream inputStream = new FileInputStream(uploadFile); + byte[] buffer = new byte[4096]; + int bytesRead = -1; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); } - - /** - * Completes the request and receives response from the server. - * @return a list of Strings as response in case the server returned - * status OK, otherwise an exception is thrown. - * @throws IOException - */ - public List finish() throws IOException { - List response = new ArrayList(); - - writer.append(LINE_FEED).flush(); - writer.append("--" + boundary + "--").append(LINE_FEED); - writer.close(); - - // checks server's status code first - int status = httpConn.getResponseCode(); - if (status == HttpURLConnection.HTTP_OK) { - BufferedReader reader = new BufferedReader(new InputStreamReader( - httpConn.getInputStream())); - String line = null; - while ((line = reader.readLine()) != null) { - response.add(line); - } - reader.close(); - httpConn.disconnect(); - } else { - throw new IOException("Server returned non-OK status: " + status); - } - - return response; + outputStream.flush(); + inputStream.close(); + + writer.append(LINE_FEED); + writer.flush(); + } + + /** + * Adds a header field to the request. + * + * @param name - name of the header field + * @param value - value of the header field + */ + public void addHeaderField(String name, String value) { + writer.append(name + ": " + value).append(LINE_FEED); + writer.flush(); + } + + /** + * Completes the request and receives response from the server. + * + * @return a list of Strings as response in case the server returned + * status OK, otherwise an exception is thrown. + * @throws IOException + */ + public List finish() throws IOException { + List response = new ArrayList(); + + writer.append(LINE_FEED).flush(); + writer.append("--" + boundary + "--").append(LINE_FEED); + writer.close(); + + // checks server's status code first + int status = httpConn.getResponseCode(); + if (status == HttpURLConnection.HTTP_OK) { + BufferedReader reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream())); + String line = null; + while ((line = reader.readLine()) != null) { + response.add(line); + } + reader.close(); + httpConn.disconnect(); + } else { + throw new IOException("Server returned non-OK status: " + status); } + + return response; + } } \ No newline at end of file diff --git a/app/src/main/java/com/arialyy/simple/upload/UploadActivity.java b/app/src/main/java/com/arialyy/simple/upload/UploadActivity.java index c75b2cda..fc70c12b 100644 --- a/app/src/main/java/com/arialyy/simple/upload/UploadActivity.java +++ b/app/src/main/java/com/arialyy/simple/upload/UploadActivity.java @@ -73,80 +73,85 @@ public class UploadActivity extends BaseActivity { //test(); } - private void test(){ - String charset = "UTF-8"; - File uploadFile1 = new File("/sdcard/Download/test.zip"); - String requestURL = "http://172.18.104.50:8080/UploadActivity/sign_file"; + private void test() { + //String charset = "UTF-8"; + //File uploadFile1 = new File("/sdcard/Download/test.zip"); + //String requestURL = "http://172.18.104.50:8080/upload/sign_file"; + ////String requestURL = "http://172.18.104.50:8080/greeting"; + // + //try { + // MultipartUtility multipart = new MultipartUtility(requestURL, charset); + // + // //multipart.addHeaderField("Test-Header", "Header-Value"); + // + // multipart.addFilePart("file", uploadFile1); + // List response = multipart.finish(); + // + // System.out.println("SERVER REPLIED:"); + // + // for (String line : response) { + // System.out.println(line); + // } + //} catch (IOException ex) { + // System.err.println(ex); + //} - try { - MultipartUtility multipart = new MultipartUtility(requestURL, charset); + UploadEntity entity = new UploadEntity(); + entity.setFilePath("/sdcard/Download/test.zip"); + entity.setFileName("test.pdf"); + UploadTaskEntity taskEntity = new UploadTaskEntity(entity); + taskEntity.uploadUrl = "http://172.18.104.50:8080/upload/sign_file"; + taskEntity.attachment = "file"; + UploadUtil util = new UploadUtil(taskEntity, new IUploadListener() { + long fileSize = 0; - //multipart.addHeaderField("Test-Header", "Header-Value"); + @Override public void onPre() { - multipart.addFilePart("file", uploadFile1); - List response = multipart.finish(); + } + + @Override public void onStart(long fileSize) { + this.fileSize = fileSize; + } - System.out.println("SERVER REPLIED:"); + @Override public void onResume(long resumeLocation) { - for (String line : response) { - System.out.println(line); } - } catch (IOException ex) { - System.err.println(ex); - } - //UploadEntity entity = new UploadEntity(); - //entity.setFilePath("/sdcard/Download/test.zip"); - //entity.setFileName("test.pdf"); - //UploadTaskEntity taskEntity = new UploadTaskEntity(entity); - //taskEntity.uploadUrl = "http://172.18.104.50:8080/UploadActivity/sign_file"; - //taskEntity.attachment = "file"; - //UploadUtil util = new UploadUtil(taskEntity, new IUploadListener() { - // long fileSize = 0; - // - // @Override public void onPre() { - // - // } - // - // @Override public void onStart(long fileSize) { - // this.fileSize = fileSize; - // } - // - // @Override public void onResume(long resumeLocation) { - // - // } - // - // @Override public void onStop(long stopLocation) { - // - // } - // - // @Override public void onProgress(long currentLocation) { - // int p = (int) (currentLocation * 100 / fileSize); - // mPb.setProgress(p); - // } - // - // @Override public void onCancel() { - // - // } - // - // @Override public void onComplete() { - // - // } - // - // @Override public void onFail() { - // - // } - //}); - //util.start(); + @Override public void onStop(long stopLocation) { + + } + + @Override public void onProgress(long currentLocation) { + int p = (int) (currentLocation * 100 / fileSize); + mPb.setProgress(p); + } + + @Override public void onCancel() { + + } + + @Override public void onComplete() { + + } + + @Override public void onFail() { + + } + }); + util.start(); } @OnClick(R.id.upload) void upload() { - //Aria.upload(this) - // .load(FILE_PATH) - // .setUploadUrl("http://172.18.104.50:8080/upload/sign_file") - // .setAttachment("file") - // .start(); - test(); + Aria.upload(this) + .load(FILE_PATH) + .setUploadUrl("http://172.18.104.50:8080/upload/sign_file") + .setAttachment("file") + .start(); + //new Thread(new Runnable() { + // @Override public void run() { + // test(); + // } + //}).start(); } @OnClick(R.id.stop) void stop() {