Теперь я получаю объект File по этой строке:
file = document.querySelector('#files > input[type="file"]').files[0]
Мне нужно отправить этот файл через json в base 64. Что мне нужно сделать, чтобы преобразовать его в строку base64?
javascript
base64
Василий
источник
источник
await
используете функцию, которая возвращает отклоненное обещание, вы не получите сообщение об ошибке, возвращаемое вызовом; это будет брошено, и вам нужно будет поймать его.Попробуйте решение, используя
FileReader
класс :Обратите внимание, что
.files[0]
этоFile
тип, который является подклассомBlob
. Таким образом, он может быть использован сFileReader
.Смотрите полный рабочий пример .
источник
return reader.result
изgetBase64()
функции (а не использоватьconsole.log(reader.result)
), потому что я хочу захватить base64 в качестве переменной (и затем отправить его в Google Apps Script). Я вызвал функцию с:,var my_file_as_base64 = getBase64(file)
а затем попытался распечатать на консоли сconsole.log(my_file_as_base64 )
и только что получилundefined
. Как правильно назначить base64 переменной?Если вы ищете решение, основанное на обещаниях, то код @ Dmitri, адаптированный для этого:
источник
Основываясь на ответах Дмитрия Павлутина и joshua.paling, вот расширенная версия, которая извлекает содержимое base64 (удаляет метаданные в начале), а также обеспечивает правильное заполнение .
источник
resolve(reader.result.replace(/^.*,/, ''));
. Поскольку кома,
находится за пределами алфавита base64, мы можем удалить все, что подходит, включая кому. stackoverflow.com/a/13195218/1935128data:
, без всякой запятой, поэтому я оставлю эту первую часть как есть. Я обновил ответ соответственно.Функция JavaScript btoa () может использоваться для преобразования данных в строку в кодировке base64
источник
Вот пара функций, которые я написал, чтобы получить файл в формате json, который можно легко передать:
источник
источник