title: Java - Posting GZIP file using Apache Http client
body: <p>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. </p>
  
  <p>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.</p>
  
  <p>Here's the send method:</p>
  
  <pre><code>    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;
  </code></pre>
  
  <p>Here is the servlet method the above code is POSTing to:</p>
  
  <pre><code>@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();
  }
  </code></pre>
  
  <p>I'm no expert on this stuff - and there doesn't appear to be much help via Google... Any help would be great.</p>
  
  <p>Thanks,
  Pete</p>