Два дня с этой проблемой ковырялся, с тем же скриптом. Пример выше не помог.
Корректно загружала картинки только мазилла, остальные браузеры били файлы, размер загруженного увеличивался, картинки не открывались.
Может кому поможет, решение простое:
.......
body += "Content-Disposition: form-data; name='"+(params.fieldName || 'file')+"';filename='" + unescape( encodeURIComponent(params.file.name)) + "'\r\n";
body += "Content-Type: application/octet-stream\r\n\r\n";
body += self.reader.result + "\r\n";
body += "--" + boundary + "--";
if (!XMLHttpRequest.prototype.sendAsBinary) {
XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
function byteValue(x) {
return x.charCodeAt(0) & 0xff;
}
var ords = Array.prototype.map.call(datastr, byteValue);
var ui8a = new Uint8Array(ords);
this.send(ui8a.buffer);
}
}
if(self.xhr.sendAsBinary) {
// firefox
self.xhr.sendAsBinary(body);
} else {
// chrome (W3C spec.)
self.xhr.send(body);
}
.............