How to upload from BUFFER?

@chris-derrell

Thanks a lot!
Now I’ve got correct Buffer, but after POST still getting 500 ERROR.

<html>
<head>
    <script type="text/javascript">
var openFile = function(event) {
    var msg = {fileName:"", fileType:"", content:"", fileSize:"", accepted:""};
    var input = event.target; 
    var reader = new FileReader();
    var fileName = input.files[0].name;   
    var fileType = input.files[0].type; 
    var fileSize = input.files[0].size;
    var accepted = input.accept;

    reader.readAsArrayBuffer(input.files[0]);

    reader.onloadend = function sendmsg(){
      var buffer = reader.result;   
      msg.fileName = fileName; 
      msg.content = buffer; 
      msg.fileType = fileType;
      msg.fileSize = fileSize;
      msg.accepted = accepted;
      window.parent.postMessage(msg,"*");
      console.log("MSG: ", msg)
    };
    window.onmessage = (event) => {
    console.log(event.data);
    var url = event.data;
    var img = msg.content; 
    var formData = {
    upload_token: "",
    file: {
      value: msg.content, 
      options: {
        filename: msg.fileName,
        contentType: msg.fileType
      }
    }
  };
    console.log(url);
    console.log(formData);
    let request = new XMLHttpRequest();
    request.open("POST", url);
    request.send(formData);
  };
  };

  </script>
  </head>

<body>
<label class="custom-file-upload" >
   <input type="file" accept='image/*' onchange='openFile(event)' />
  </label>
</body>
</html>

Do I need an UploadToken? I doubt.
So my formData still incorrect?

In console formData look like that

file:
    options: {filename: "05f3ef4974016ea1efdc5862bd14b5c6.jpg", contentType:         "image/jpeg"}
    value: ArrayBuffer(84008)
    [[Prototype]]: Object
upload_token: ""
    [[Prototype]]: Object