Teraz otrzymuję obiekt File z tej linii:
file = document.querySelector('#files > input[type="file"]').files[0]
Muszę wysłać ten plik przez json w base 64. Co powinienem zrobić, aby przekonwertować go na ciąg base64?
javascript
base64
Wasilij
źródło
źródło
await
funkcję, która zwraca odrzuconą obietnicę, wywołanie nie zwróci błędu; zostanie rzucony i będziesz musiał go złapać.Wypróbuj rozwiązanie za pomocą
FileReader
klasy :Zauważ, że
.files[0]
jest toFile
typ, który jest podklasąBlob
. Dzięki temu może być używany zFileReader
.Zobacz pełny przykład roboczy .
źródło
return reader.result
zgetBase64()
funkcji (zamiast używaćconsole.log(reader.result)
), ponieważ chcę, aby uchwycić base64 jako zmienna (a następnie wysłać go do Google Apps Script). Wywołałem funkcję za pomocą:,var my_file_as_base64 = getBase64(file)
a następnie spróbowałem wydrukować na konsoliconsole.log(my_file_as_base64 )
i właśnie otrzymałemundefined
. Jak prawidłowo przypisać base64 do zmiennej?Jeśli szukasz rozwiązania opartego na obietnicy, oto kod @ Dmitri przystosowany do tego:
źródło
Opierając się na odpowiedziach Dmitri Pavlutin i joshua.paling, oto rozszerzona wersja, która wyodrębnia zawartość base64 (usuwa metadane na początku), a także zapewnia prawidłowe wypełnienie .
źródło
resolve(reader.result.replace(/^.*,/, ''));
. Ponieważ śpiączka,
jest poza alfabetem base64, możemy usunąć wszystko, co się pojawi, aż do śpiączki włącznie. stackoverflow.com/a/13195218/1935128data:
, bez przecinka, więc zachowam tę pierwszą część tak, jak jest. Odpowiednio zaktualizowałem odpowiedź.Funkcja JavaScript btoa () może służyć do konwersji danych na łańcuch zakodowany w standardzie base64
źródło
Oto kilka funkcji, które napisałem, aby uzyskać plik w formacie json, który można łatwo przekazać:
źródło
źródło