Я пытаюсь отправить двоичные данные с помощью 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'}));
Что именно я пропускаю / делаю неправильно?
Реальный пример
Задача ещё не решена.
Других решений пока нет …