I need to send a tar.gzip file from one java app (via a Servlet) to another - I'm using HTTP client with a MultipartEntity to achieve this.
During the file transfer, the file seems to double in size - as if it's being decompressed - and it's no longer recognizable as either a tar.gz or tar file.
Here's the send method:
    HttpClient http = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);
    MultipartEntity multipart = new MultipartEntity();
    ContentBody fileContent = new FileBody(file, "application/octet-stream");
    ContentBody pathContent = new StringBody(file.getAbsolutePath());
    multipart.addPart("package", fileContent);
    multipart.addPart("path", pathContent);
    post.setEntity(multipart);
    HttpResponse response = null;
    try {
        response = http.execute(post);
        StringWriter sw = new StringWriter();
        IOUtils.copy(response.getEntity().getContent(), sw);
    } catch (Exception ex){
        log.error("Unable to POST to ["+url+"].",ex);
    }
    return result;
Here is the servlet method the above code is POSTing to:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    log.info("File transfer request received, collecting file information and saving to server.");
    Part filePart = req.getPart("package");
    Part filePathPart = req.getPart("path");
    StringWriter sw = new StringWriter();
    IOUtils.copy(filePathPart.getInputStream(), sw);
    String path = sw.getBuffer().toString();
    File outputFile = new File(path);
    FileWriter out = new FileWriter(outputFile);
    IOUtils.copy(filePart.getInputStream(), out);
    log.info("File ["+path+"] has been saved to the server.");
    out.close();
    sw.close();
}
I'm no expert on this stuff - and there doesn't appear to be much help via Google... Any help would be great.
Thanks, Pete
 
     
    