reader.readAsDataURL, приводящий к дефектной строке base64? - PullRequest
0 голосов
/ 13 января 2019

Я использую этот код JavaScript для чтения и загрузки файла на сервер:

var reader  = new FileReader();
reader.onloadend = function() {
  var bytes = reader.result;
  var ext = file.name.split(".").pop();
  xhr.send("bytes="+bytes+"&type="+ext);
}
reader.readAsDataURL(file);

Когда я проверяю, какие параметры отправляются на сервер (в консоли разработчика), я вижу это:

https://imgur.com/a/aO9PMBz

, что приводит к недопустимой ошибке в символе base64 (я думаю, это вызвано пробелами в строке).

Кто-нибудь знает, как это исправить?

1 Ответ

0 голосов
/ 13 января 2019

readAsDataURL не производит чистую строку base64, но скорее производит строку в формате:

data:[<mediatype>][;base64],<data>

Этот формат известен как URI данных . Вы можете получить необработанные данные base64, разделив:

const base64 = reader.result.split (",").pop ()

Если ваши данные все еще недействительны, используйте readAsBinaryString (который возвращает файл / блог), а затем используйте window.btoa, чтобы преобразовать их в строку base64.

...