Więcej
Jak można zakodować ciąg znaków do Base64 w JavaScript?
Mam skrypt PHP, który może zakodować obraz PNG do łańcucha Base64.
Chciałbym zrobić to samo używając JavaScript. Wiem jak otworzyć pliki, ale nie jestem pewien jak zrobić kodowanie. Nie jestem przyzwyczajony do pracy z danymi binarnymi.
744
3
Możesz użyć
btoa()
iatob()
do konwersji do i z kodowania base64.Wydaje się, że jest pewne zamieszanie w komentarzach dotyczące tego, co te funkcje akceptują/zwracają, więc...
Funkcja
btoa()
akceptuje "łańcuch", gdzie każdy znak reprezentuje 8-bitowy bajt - jeśli podasz łańcuch zawierający znaki, które nie mogą być reprezentowane w 8 bitach, prawdopodobnie się zepsuje. To nie jest problem jeśli traktujesz łańcuch jako tablicę bajtów, ale jeśli próbujesz zrobić coś innego, będziesz musiał go najpierw zakodować.Funkcja
atob()
zwraca "łańcuch", w którym każdy znak reprezentuje 8-bitowy bajt - to znaczy, jego wartość będzie pomiędzy0
a0xff
. To nie oznacza, że jest to ASCII - przypuszczalnie jeśli używasz tej funkcji w ogóle, oczekujesz pracy z danymi binarnymi, a nie tekstem.Zobacz także:
[Stąd][1]:
Kod Sunny'ego jest świetny, z wyjątkiem tego, że łamie się w IE7 z powodu odwołań do "this". Poprawione przez zastąpienie takich odwołań przez "Base64":