javascript — отправка необработанных двоичных данных через AJAX как BLOB

Я пытаюсь отправить двоичные данные с помощью BLOB-объектов … но, похоже, это не то же самое, что когда я использую base64 перед отправкой … Кажется, что каким-то образом они преобразуются из UTF8 в UTF16 в полете … или что-то в этом роде …

function upload(blobOrFile) {
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://...:P', true);
xhr.onload = function(e) { alert('ok'); };

// Listen to the upload progress.
var progressBar = document.querySelector('progress');
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
progressBar.value = (e.loaded / e.total) * 100;
progressBar.textContent = progressBar.value; // Fallback for unsupported browsers.
}
};

xhr.send(blobOrFile);
}

upload(new Blob([binary_data_string], {type: 'application/octet-stream'}));

Что именно я пропускаю / делаю неправильно?

Реальный пример

  1. good.dat — Данные, полученные при отправке его в кодировке Base64 и декодировании через PHP — неплохие.

  2. bad.dat — данные, полученные при отправке без кодировки Base64 — плохие.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]