Я создаю расширение Chrome, в котором я имитирую форму POST для отправки изображений на сервер.Мне удалось загрузить файл, но его содержимое искажено.Сравнивая массив байтов загруженного и оригинального, можно заметить, что каждый байт> 127 преобразуется в 2 других байта.
Например: 137 -> 194 137
233 -> 195 169
Полезная нагрузка POST в инструменте разработчика Chrome предполагает добавление избыточного байта перед отправкой запроса.
Мой оригинальный файл Содержимое:
‰PNG ....
И содержимое, записанное в веб-содержимом
‰PNG ....
Символ, который не должен быть там, предшествуетсодержание.У вас есть идеи, как избежать этой проблемы?Ниже приведен код, который я использую для проверки:
var fr = new FileReader();
fr.onloadend = function(evt){
if(evt.target.readyState == FileReader.DONE){
//str - image content
var str = "";
var byteStr = "";
var dv = new DataView(evt.target.result);
console.log("data length = " + evt.target.result.byteLength);
for(var i = 0 ; i < evt.target.result.byteLength; i++){
var b1 = dv.getUint8(i);
str += String.fromCharCode(b1);
byteStr += b1 + " ";
}
console.log(str);
console.log(byteStr);
//use jQuery.ajax to post image to server
attachImage(str, file.name,file.type);
}
}
fr.readAsArrayBuffer(file);
Заранее спасибо.