title: Sending Javascript POST XMLHttpRequest File Contents in Hex
body: <p>I'm trying to upload a static file from within my JS code. I have a .tgz file that I want to send as POST parameter. I've dumped my file to a hex string fileDatalike:
  var file = "\xff\x01\x08 .....</p>
  
  <p>I want to send as the body content of a multi form post data. It seems like when I try to just .send(file) the hex values become mangled and the file is corrupted. </p>
  
  <p>JS looks something like this: </p>
  
  <pre><code>var url = "/index/upload/"
  
  var fileData = '\xF1\x08\x00\x00........\x00\x00';
  //whole file binary content in hex) 
  
  boundary = "----------3333338220322",
  xhr = new XMLHttpRequest();
  xhr.open("POST", url, true);
  xhr.setRequestHeader("Content-Type", "multipart/form-data, boundary="+boundary);
  var body = "--" + boundary + "\r\n";
  body += 'Content-Disposition: form-data; name="newFile"; filename="filename.tgz"\r\n';
  body += "Content-Type: application/x-gzip\r\n\r\n";
  body += fileData + "\r\n";
  body += "--" + boundary + "--";
  xhr.send(body);
  </code></pre>
  
  <p>Not sure what goes wrong. The request seems to look exactly like if I manually upload the file, but the binary data seems different when observing through a proxy. Is there a better way to send files if i need to have its whole content in the JS code itself?</p>