как вы знаете, HTML 5 предлагает хороший FileAPI.Я построил систему, в которой пользователь получает строку в кодировке Base64, которая должна быть записана на диск (имеет соответствующие разрешения, потому что это приложение Google Chrome).Мой код следующий: (немного очищен от ненужных вещей)
function onInitFs(fs){
fs.root.getFile(fileName, {create: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
var bb = new window.WebKitBlobBuilder();
bb.append( atob(dataInBase64Format));
fileWriter.write(bb.getBlob());
}, errorHandler);
console.log( fileEntry.toURL());
}, errorHandler);
}
Тем не менее, мой исходный размер файла: 6302446 байт, и сервер отправил их как Base64 в 8403264 байт, однако сохраненный файл 9242715байт.Конечно, я понял, что что-то не так, и я посмотрел файл, и это просто хорошая строка.Не появляются причудливые символы.Я предполагаю, что я пишу в текстовом режиме и atob просто конвертирует его в другую строку;который мне нужно преобразовать в двоичный формат (возможно, в массив?) и заставить мой fileWriter писать в двоичном режиме, а не в текстовом режиме.Я искал в Интернете, но не смог найти решение.Я нашел этот вопрос в StackOverflow Могут ли методы Google Chrome Base64 обрабатывать двоичные данные из File API? , но это не помогло мне.
Как преобразовать строку Base64 в правильнуюструктура данных и мой fileWriter, чтобы написать это?