{"id":23258,"date":"2019-05-21T20:12:33","date_gmt":"2019-05-21T13:12:33","guid":{"rendered":"http:\/\/tom.ji42.com\/?p=23258"},"modified":"2021-01-05T09:44:53","modified_gmt":"2021-01-05T02:44:53","slug":"android-code-to-upload-download-large-files-to-server","status":"publish","type":"post","link":"https:\/\/tom.tomwork.net\/?p=23258","title":{"rendered":"Android Code to Upload &#038; Download large files to server"},"content":{"rendered":"<div>Java\/android code to manage file upload &amp; download<\/div>\n<div><\/div>\n<p><!--more--><\/p>\n<pre>\/**\r\n* This Class has functions to upload &amp; download large files from server.\r\n* @author Vikrant &lt;vikrant@cuelogic.co.in&gt; \r\n*\/\r\nimport java.io.BufferedInputStream;\r\nimport java.io.DataOutputStream;\r\nimport java.io.File;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileOutputStream;\r\nimport java.io.IOException;\r\nimport java.net.HttpURLConnection;\r\nimport java.net.MalformedURLException;\r\nimport java.net.URISyntaxException;\r\nimport java.net.URL;\r\n \r\npublic class fileUploadDownload {\r\n \r\n\t\/**\r\n\t * @param args\r\n\t * @throws URISyntaxException \r\n\t * @throws IOException \r\n\t *\/\r\n\tpublic static void main(String[] args) throws IOException, URISyntaxException {\r\n \r\n\t\tuploadFileToServer(\"video.mp4\",\"http:\/\/mysite.com\/upload.php\");\r\n\t\tdownloadFileFromServer(\"video.mp4\",\"http:\/\/mysite.com\/video.mp4\");\r\n\t}\r\n \r\n\t\/**\r\n\t * This function upload the large file to server with other POST values.\r\n\t * @param filename\r\n\t * @param targetUrl\r\n\t * @return\r\n\t *\/\r\n\tpublic static String uploadFileToServer(String filename, String targetUrl) {\r\n\t    String response = \"error\";\r\n\t    HttpURLConnection connection = null;\r\n\t    DataOutputStream outputStream = null;\r\n \r\n\t    String pathToOurFile = filename;\r\n\t    String urlServer = targetUrl;\r\n\t    String lineEnd = \"\\r\\n\";\r\n\t    String twoHyphens = \"--\";\r\n\t    String boundary = \"*****\";\r\n \r\n\t    int bytesRead, bytesAvailable, bufferSize;\r\n\t    byte[] buffer;\r\n\t    int maxBufferSize = 1 * 1024;\r\n\t    try {\r\n\t        FileInputStream fileInputStream = new FileInputStream(new File(\r\n\t                pathToOurFile));\r\n \r\n\t        URL url = new URL(urlServer);\r\n\t        connection = (HttpURLConnection) url.openConnection();\r\n \r\n\t        \/\/ Allow Inputs &amp; Outputs\r\n\t        connection.setDoInput(true);\r\n\t        connection.setDoOutput(true);\r\n\t        connection.setUseCaches(false);\r\n\t        connection.setChunkedStreamingMode(1024);\r\n\t        \/\/ Enable POST method\r\n\t        connection.setRequestMethod(\"POST\");\r\n \r\n\t        connection.setRequestProperty(\"Connection\", \"Keep-Alive\");\r\n\t        connection.setRequestProperty(\"Content-Type\",\r\n\t                \"multipart\/form-data; boundary=\" + boundary);\r\n \r\n\t        outputStream = new DataOutputStream(connection.getOutputStream());\r\n\t        outputStream.writeBytes(twoHyphens + boundary + lineEnd);\r\n \r\n\t        String token = \"anyvalye\";\r\n\t        outputStream.writeBytes(\"Content-Disposition: form-data; name=\\\"Token\\\"\" + lineEnd);\r\n\t        outputStream.writeBytes(\"Content-Type: text\/plain;charset=UTF-8\" + lineEnd);\r\n\t        outputStream.writeBytes(\"Content-Length: \" + token.length() + lineEnd);\r\n\t        outputStream.writeBytes(lineEnd);\r\n\t        outputStream.writeBytes(token + lineEnd);\r\n\t        outputStream.writeBytes(twoHyphens + boundary + lineEnd);\r\n \r\n\t        String taskId = \"anyvalue\";\r\n\t        outputStream.writeBytes(\"Content-Disposition: form-data; name=\\\"TaskID\\\"\" + lineEnd);\r\n\t        outputStream.writeBytes(\"Content-Type: text\/plain;charset=UTF-8\" + lineEnd);\r\n\t        outputStream.writeBytes(\"Content-Length: \" + taskId.length() + lineEnd);\r\n\t        outputStream.writeBytes(lineEnd);\r\n\t        outputStream.writeBytes(taskId + lineEnd);\r\n\t        outputStream.writeBytes(twoHyphens + boundary + lineEnd);\r\n \r\n\t        String connstr = null;\r\n\t        connstr = \"Content-Disposition: form-data; name=\\\"UploadFile\\\";filename=\\\"\"\r\n\t                + pathToOurFile + \"\\\"\" + lineEnd;\r\n \r\n\t        outputStream.writeBytes(connstr);\r\n\t        outputStream.writeBytes(lineEnd);\r\n \r\n\t      \tbytesAvailable = fileInputStream.available();\r\n\t        bufferSize = Math.min(bytesAvailable, maxBufferSize);\r\n\t        buffer = new byte[bufferSize];\r\n \r\n\t        \/\/ Read file\r\n\t        bytesRead = fileInputStream.read(buffer, 0, bufferSize);\r\n\t        System.out.println(\"Image length \" + bytesAvailable + \"\");\r\n\t        try {\r\n\t            while (bytesRead &gt; 0) {\r\n\t                try {\r\n\t                    outputStream.write(buffer, 0, bufferSize);\r\n\t                } catch (OutOfMemoryError e) {\r\n\t                    e.printStackTrace();\r\n\t                    response = \"outofmemoryerror\";\r\n\t                    return response;\r\n\t                }\r\n\t                bytesAvailable = fileInputStream.available();\r\n\t                bufferSize = Math.min(bytesAvailable, maxBufferSize);\r\n\t                bytesRead = fileInputStream.read(buffer, 0, bufferSize);\r\n\t            }\r\n\t        } catch (Exception e) {\r\n\t            e.printStackTrace();\r\n\t            response = \"error\";\r\n\t            return response;\r\n\t        }\r\n\t        outputStream.writeBytes(lineEnd);\r\n\t        outputStream.writeBytes(twoHyphens + boundary + twoHyphens\r\n\t                + lineEnd);\r\n \r\n\t        \/\/ Responses from the server (code and message)\r\n\t        int serverResponseCode = connection.getResponseCode();\r\n\t        String serverResponseMessage = connection.getResponseMessage();\r\n\t        System.out.println(\"Server Response Code \" + \" \" + serverResponseCode);\r\n\t        System.out.println(\"Server Response Message \"+ serverResponseMessage);\r\n \r\n\t        if (serverResponseCode == 200) {\r\n\t            response = \"true\";\r\n\t        }else\r\n\t        {\r\n\t        \tresponse = \"false\";\r\n\t        }\r\n \r\n\t        fileInputStream.close();\r\n\t        outputStream.flush();\r\n \r\n\t        connection.getInputStream();\r\n\t        \/\/for android InputStream is = connection.getInputStream();\r\n\t        java.io.InputStream is = connection.getInputStream();\r\n \r\n\t\t\tint ch;\r\n\t\t\tStringBuffer b = new StringBuffer();\r\n\t\t\twhile( ( ch = is.read() ) != -1 ){\r\n\t\t\t\tb.append( (char)ch );\r\n\t\t\t}\r\n \r\n\t\t\tString responseString = b.toString();\r\n\t\t\tSystem.out.println(\"response string is\" + responseString); \/\/Here is the actual output\r\n \r\n\t        outputStream.close();\r\n\t        outputStream = null;\r\n \r\n\t    } catch (Exception ex) {\r\n\t        \/\/ Exception handling\r\n\t        response = \"error\";\r\n\t        System.out.println(\"Send file Exception\" + ex.getMessage() + \"\");\r\n\t        ex.printStackTrace();\r\n\t    }\r\n\t    return response;\r\n\t}\r\n \r\n\t\/**\r\n\t * This function download the large files from the server\r\n\t * @param filename\r\n\t * @param urlString\r\n\t * @throws MalformedURLException\r\n\t * @throws IOException\r\n\t *\/\r\n\tpublic static void downloadFileFromServer(String filename, String urlString) throws MalformedURLException, IOException\r\n    {\r\n        BufferedInputStream in = null;\r\n        FileOutputStream fout = null;\r\n        try\r\n        {\r\n    \t    URL url = new URL(urlString);\r\n \r\n            in = new BufferedInputStream(url.openStream());\r\n            fout = new FileOutputStream(filename);\r\n \r\n            byte data[] = new byte[1024];\r\n            int count;\r\n            while ((count = in.read(data, 0, 1024)) != -1)\r\n            {\r\n                fout.write(data, 0, count);\r\n                System.out.println(count);\r\n            }\r\n        }\r\n        finally\r\n        {\r\n            if (in != null)\r\n                    in.close();\r\n            if (fout != null)\r\n                    fout.close();\r\n        }\r\n        System.out.println(\"Done\");\r\n    }\r\n}\r\n<\/pre>\n<div class=\"snipt-embed-logo\">\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Java\/android code to manage file upload &amp; download<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[],"class_list":["post-23258","post","type-post","status-publish","format-standard","hentry","category-13"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6cOVM-638","_links":{"self":[{"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/posts\/23258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=23258"}],"version-history":[{"count":5,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/posts\/23258\/revisions"}],"predecessor-version":[{"id":25521,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/posts\/23258\/revisions\/25521"}],"wp:attachment":[{"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=23258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=23258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=23258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}