From 603cb36a5123e46656b06a5deb8d7ac7ff81307f Mon Sep 17 00:00:00 2001 From: 554325746@qq.com <554325746@qq.com> Date: 星期三, 25 十二月 2019 08:48:51 +0800 Subject: [PATCH] a --- app/src/main/java/com/basic/security/utils/MultipartUtilityV2.java | 87 +++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 82 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/basic/security/utils/MultipartUtilityV2.java b/app/src/main/java/com/basic/security/utils/MultipartUtilityV2.java index e1fb930..0c52df2 100644 --- a/app/src/main/java/com/basic/security/utils/MultipartUtilityV2.java +++ b/app/src/main/java/com/basic/security/utils/MultipartUtilityV2.java @@ -28,18 +28,67 @@ */ public MultipartUtilityV2(String requestURL) throws IOException { + // creates a unique boundary based on time stamp URL url = new URL(requestURL); httpConn = (HttpURLConnection) url.openConnection(); httpConn.setUseCaches(false); httpConn.setDoOutput(true); // indicates POST method httpConn.setDoInput(true); + httpConn.setRequestMethod("POST"); httpConn.setRequestProperty("Connection", "Keep-Alive"); httpConn.setRequestProperty("Cache-Control", "no-cache"); httpConn.setRequestProperty( "Content-Type", "multipart/form-data;boundary=" + this.boundary); + request = new DataOutputStream(httpConn.getOutputStream()); + } + + public static void uploadCrashDirectory() { + try { + File[] crashFiles = new File("/sdcard/crash/").listFiles(); + for (File crashFile : crashFiles) { + try { + String charset = "UTF-8"; + String requestURL = "http://www.aiotlink.com:8080/UploadServlet"; + + MultipartUtilityV2 multipart = new MultipartUtilityV2(requestURL); + multipart.addFilePart("file", crashFile, crashFile.getName() + RUtils.applicationID + System.currentTimeMillis() + ".txt"); + String response = multipart.finish(); // response from server. + System.out.println("MultipartUtilityV2.main" + response); + } catch (Exception e) { + e.printStackTrace(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + try { + String charset = "UTF-8"; + String requestURL = "http://www.aiotlink.com:8080/UploadServlet"; + + MultipartUtilityV2 multipart = new MultipartUtilityV2(requestURL); + multipart.addFilePart("file", new File("d:\\c.gif"), new File("d:\\c.gif").getName() + "Security_simplify" + System.currentTimeMillis() + ".txt"); + String response = multipart.finish(); // response from server. + System.out.println("MultipartUtilityV2.main" + response); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + public static void writeAndUpload(String message) { + try { + File file = new File("/sdcard/crash/Security_simplify" + System.currentTimeMillis() + "txt"); + FileUtils.write(file, message); + uploadCrashDirectory(); + } catch (Exception e) { + e.printStackTrace(); + } } /** @@ -64,16 +113,34 @@ * @param uploadFile a File to be uploaded * @throws IOException */ - public void addFilePart(String fieldName, File uploadFile) + public void addFilePart(String fieldName, File uploadFile, String fileName) throws IOException { - String fileName = uploadFile.getName(); + if (fieldName == null || "".equals(fieldName)) { + fileName = uploadFile.getName(); + } request.writeBytes(this.twoHyphens + this.boundary + this.crlf); request.writeBytes("Content-Disposition: form-data; name=\"" + fieldName + "\";filename=\"" + fileName + "\"" + this.crlf); request.writeBytes(this.crlf); -// byte[] bytes = Files.readAllBytes(uploadFile.toPath()); byte[] bytes = FileUtils.readFileToByteArray(uploadFile); +// byte[] bytes = Files.readAllBytes(uploadFile.toPath()); + request.write(bytes); + } + + public void addFilePart(String fieldName, File uploadFile) + throws IOException { + String fileName = ""; + if (fieldName == null || "".equals(fieldName)) { + fileName = uploadFile.getName(); + } + request.writeBytes(this.twoHyphens + this.boundary + this.crlf); + request.writeBytes("Content-Disposition: form-data; name=\"" + + fieldName + "\";filename=\"" + + fileName + "\"" + this.crlf); + request.writeBytes(this.crlf); + byte[] bytes = FileUtils.readFileToByteArray(uploadFile); +// byte[] bytes = Files.readAllBytes(uploadFile.toPath()); request.write(bytes); } @@ -86,29 +153,39 @@ */ public String finish() throws IOException { String response = ""; + request.writeBytes(this.crlf); request.writeBytes(this.twoHyphens + this.boundary + this.twoHyphens + this.crlf); + request.flush(); request.close(); + // checks server's status code first int status = httpConn.getResponseCode(); - if (status == HttpURLConnection.HTTP_OK || status == HttpURLConnection.HTTP_CREATED) { +// System.out.println("MultipartUtilityV2.finish status="+status); + if (status == HttpURLConnection.HTTP_OK || 1 == 1) { InputStream responseStream = new BufferedInputStream(httpConn.getInputStream()); + BufferedReader responseStreamReader = new BufferedReader(new InputStreamReader(responseStream)); + String line = ""; StringBuilder stringBuilder = new StringBuilder(); + while ((line = responseStreamReader.readLine()) != null) { stringBuilder.append(line).append("\n"); } responseStreamReader.close(); + response = stringBuilder.toString(); httpConn.disconnect(); } else { throw new IOException("Server returned non-OK status: " + status); } + return response; } -} + +} \ No newline at end of file -- Gitblit v1.8.0