Agora estou recebendo o objeto File por esta linha:
file = document.querySelector('#files > input[type="file"]').files[0]
Preciso enviar esse arquivo via json na base 64. O que devo fazer para convertê-lo em string base64?
javascript
base64
Vassily
fonte
fonte
await
uma função que retorna uma Promessa rejeitada, você não receberá um Erro retornado pela chamada; será lançado e você precisará pegá-lo.Experimente a solução usando a
FileReader
classe :Observe que esse
.files[0]
é umFile
tipo, que é uma subcategoria deBlob
. Assim, pode ser usado comFileReader
.Veja o exemplo de trabalho completo .
fonte
return reader.result
agetBase64()
função (em vez de usarconsole.log(reader.result)
) porque quero capturar a base64 como uma variável (e enviá-la ao script do Google Apps). Chamei a função com:var my_file_as_base64 = getBase64(file)
e tentei imprimir no consoleconsole.log(my_file_as_base64 )
e acabei de receberundefined
. Como atribuir corretamente a base64 a uma variável?Se você procura uma solução baseada em promessas, este é o código do @ Dmitri adaptado para isso:
fonte
Com base nas respostas Dmitri Pavlutin e joshua.paling, aqui está uma versão estendida que extrai o conteúdo base64 (remove os metadados no início) e também garante que o preenchimento seja feito corretamente .
fonte
resolve(reader.result.replace(/^.*,/, ''));
. Como o coma,
está fora do alfabeto base64, podemos remover qualquer coisa que surja até e incluindo o coma. stackoverflow.com/a/13195218/1935128data:
, sem vírgula, por isso vou manter a primeira parte como está. Atualizei a resposta de acordo.A função JavaScript btoa () pode ser usada para converter dados em string codificada em base64
fonte
Aqui estão algumas funções que escrevi para obter um arquivo em um formato json que pode ser transmitido facilmente:
fonte
fonte