title: URLEncode() an image file on my desktop instead of an image at a url
body: <p>I currently have code that uses URLEncoder to form a data string that I send to an api.</p>
  
  <p>It url encodes an image on the web.</p>
  
  <p>I want to change it so it url encodes an image on my desktop instead.</p>
  
  <p>How should I go about doing this please? Is there simply a different syntax I need to use, or do I need to parse the path on my desktop so it is readable by URLEncoder? </p>
  
  <p>The code is below. Thankyou for reading</p>
  
  <pre><code>url = new URL("https://api.imgur.com/3/image");
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  
      String data = URLEncoder.encode("image", "UTF-8") + "=" 
  
              //what i want but doesnt work
                + URLEncoder.encode("C:\\Users\\J\\Desktop\\test5.jpg", "UTF-8");
  
              // what works but i dont want
                + URLEncoder.encode("http://i.imgur.com/FB9OZWQ.jpg", "UTF-8");
  
      conn.setDoOutput(true);
      conn.setDoInput(true);
      conn.setRequestMethod("POST");
      conn.setRequestProperty("Authorization", "Client-ID " + clientID);
      conn.setRequestMethod("POST");
      conn.setRequestProperty("Content-Type",
              "application/x-www-form-urlencoded");
  
      conn.connect();
      StringBuilder stb = new StringBuilder();
      OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
      wr.write(data);
  </code></pre>
  
  <p>The entire class</p>
  
  <pre><code>public class UploadController {
  
       public static String getImgurContent(String clientID) throws Exception {
  
  //         clientID = "b290a88ad882073";
  
      URL url;
  
      url = new URL("https://api.imgur.com/3/image");
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  
      String data = URLEncoder.encode("image", "UTF-8") + "=" 
  
              //what i want but doesnt work
                + URLEncoder.encode("C:\\Users\\J\\Desktop\\test5.jpg", "UTF-8");
  
              // what works but i dont want
                + URLEncoder.encode("http://i.imgur.com/FB9OZWQ.jpg", "UTF-8");
  
      conn.setDoOutput(true);
      conn.setDoInput(true);
      conn.setRequestMethod("POST");
      conn.setRequestProperty("Authorization", "Client-ID " + clientID);
      conn.setRequestMethod("POST");
      conn.setRequestProperty("Content-Type",
              "application/x-www-form-urlencoded");
  
      conn.connect();
      StringBuilder stb = new StringBuilder();
      OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
      wr.write(data);
      wr.flush();
  
      // Get the response
      BufferedReader rd = new BufferedReader(
              new InputStreamReader(conn.getInputStream()));
      String line;
      while ((line = rd.readLine()) != null) {
          stb.append(line).append("\n");
      }
      wr.close();
      rd.close();
  
      System.out.println(stb.toString());
  
      return stb.toString();
  }
  
  }
  </code></pre>
  
  <p>Thanks to the kind answerer I have updated my code to the follow. I am still getting a 404 however. The base64 looks like this </p>
  
  <pre><code>_9j_4AAQSkZJRgABAQEASABIAAD_2wBDAAYEBQ
  </code></pre>
  
  <p>The Imgur api should accept it <a href="https://api.imgur.com/endpoints/image" rel="nofollow">https://api.imgur.com/endpoints/image</a> i think</p>
  
  <p>The code is here:</p>
  
  <pre><code>public class UploadController {
  
       public static String getImgurContent(String clientID) throws Exception {
  
  //         clientID = "b290a88ad882073";
  
      URL url;
  
      url = new URL("https://api.imgur.com/3/image");
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  
      String file1 = "C:\\Users\\J\\Desktop\\test5.jpg";
  
  //    convert to base64
  
      FileInputStream imageInFile = new FileInputStream(file1);
              byte imageData[] = new byte[(int) file1.length()];
              imageInFile.read(imageData);
  
              String convertedImageData = Base64.encodeBase64URLSafeString(imageData);
  
              System.out.println(convertedImageData);
  
  //                String data = "image/png" + "base64" + "=" + convertedImageData;
  
  
  //         sample data string
  //            data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
  
  //    String data = URLEncoder.encode("image", "UTF-8") + "=" 
  
              //what i want but doesnt work
  //              + URLEncoder.encode("C:\\Users\\J\\Desktop\\test5.jpg", "UTF-8");
  
              // what works but i dont want
  //              + URLEncoder.encode("http://i.imgur.com/FB9OZWQ.jpg", "UTF-8");
  
  
      conn.setDoOutput(true);
      conn.setDoInput(true);
      conn.setRequestMethod("POST");
      conn.setRequestProperty("Authorization", "Client-ID " + clientID);
  
      conn.setRequestProperty("Content-Type",
              "application/x-www-form-urlencoded");
  
      conn.connect();
      StringBuilder stb = new StringBuilder();
      OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
      wr.write(convertedImageData);
      wr.flush();
  
      // Get the response
      BufferedReader rd = new BufferedReader(
              new InputStreamReader(conn.getInputStream()));
      String line;
      while ((line = rd.readLine()) != null) {
          stb.append(line).append("\n");
      }
      wr.close();
      rd.close();
  
      System.out.println(stb.toString());
  
      return stb.toString();
  }
  </code></pre>
  
  <p>The return message:</p>
  
  <pre><code>Building g5 1.0-SNAPSHOT
  ------------------------------------------------------------------------
  
  --- exec-maven-plugin:1.2.1:exec (default-cli) @ g5 ---
  _9j_4AAQSkZJRgABAQEASABIAAD_2wBDAAYEBQ
  Exception in thread "main" java.io.IOException: Server returned HTTP response code: 400 for URL: https://api.imgur.com/3/image
      at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1839)
      at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
      at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
      at main.UploadController.getImgurContent(UploadController.java:80)
      at main.ImgurMainTest1.main(ImgurMainTest1.java:16)
  ------------------------------------------------------------------------
  BUILD FAILURE
  ------------------------------------------------------------------------
  Total time: 2.003s
  Finished at: Wed Apr 22 01:17:49 BST 2015
  Final Memory: 5M/109M
  ------------------------------------------------------------------------
  Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (default-cli) on project g5: Command execution failed. Process exited with an error: 1 (Exit value: 1) -&gt; [Help 1]
  
  To see the full stack trace of the errors, re-run Maven with the -e switch.
  Re-run Maven using the -X switch to enable full debug logging.
  
  For more information about the errors and possible solutions, please read the following articles:
  [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
  </code></pre>