function uploadFile(file, url) {
var reader = new FileReader();
reader.onload = function () {
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", function (e) {
if (e.lengthComputable) {
var progress = (e.loaded * 100) / e.total;
}
}, false);
xhr.onreadystatechange = function () {
if (this.readyState == 4) {
if (this.status == 200) {
} else {
}
}
};
xhr.open("POST", url);
var boundary = "xxxxxxxxx";
xhr.setRequestHeader("Content-Type", "multipart/form-data, boundary=" + boundary);
xhr.setRequestHeader("Cache-Control", "no-cache");
var body = "--" + boundary + "\r\n";
body += "Content-Disposition: form-data; name='myFile'; filename='" + file.name + "'\r\n";
body += "Content-Type: application/octet-stream\r\n\r\n";
body += reader.result + "\r\n";
body += "--" + boundary + "--";
if (xhr.sendAsBinary) {
xhr.sendAsBinary(body);
} else {
xhr.send(body);
}
};
reader.readAsBinaryString(file);
}
ZnVuY3Rpb24gdXBsb2FkRmlsZShmaWxlLCB1cmwpIHsKCiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CgogICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgaWYgKGUubGVuZ3RoQ29tcHV0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBwcm9ncmVzcyA9IChlLmxvYWRlZCAqIDEwMCkgLyBlLnRvdGFsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBmYWxzZSk7CgogICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09IDIwMCkgewoKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICB4aHIub3BlbigiUE9TVCIsIHVybCk7CiAgICAgICAgICAgIHZhciBib3VuZGFyeSA9ICJ4eHh4eHh4eHgiOwoKICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJtdWx0aXBhcnQvZm9ybS1kYXRhLCBib3VuZGFyeT0iICsgYm91bmRhcnkpOwogICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcigiQ2FjaGUtQ29udHJvbCIsICJuby1jYWNoZSIpOwoKICAgICAgICAgICAgdmFyIGJvZHkgPSAiLS0iICsgYm91bmRhcnkgKyAiXHJcbiI7CiAgICAgICAgICAgIGJvZHkgKz0gIkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0nbXlGaWxlJzsgZmlsZW5hbWU9JyIgKyBmaWxlLm5hbWUgKyAiJ1xyXG4iOwogICAgICAgICAgICBib2R5ICs9ICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVxyXG5cclxuIjsKICAgICAgICAgICAgYm9keSArPSByZWFkZXIucmVzdWx0ICsgIlxyXG4iOwogICAgICAgICAgICBib2R5ICs9ICItLSIgKyBib3VuZGFyeSArICItLSI7CgogICAgICAgICAgICBpZiAoeGhyLnNlbmRBc0JpbmFyeSkgewoKICAgICAgICAgICAgICAgIHhoci5zZW5kQXNCaW5hcnkoYm9keSk7CiAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgeGhyLnNlbmQoYm9keSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpOwogICAgfQ==