2016-09-19 12 views
1

У меня есть проблема с преобразованием двоичных данных в base-64 в JS. Я пробую все, что существует в сети, включая этот How to parse into base64 string the binary image from response?, но все возвращают неправильную базу-64, и я не нахожу почему!преобразовать двоичные данные в base-64 javaScript

** Я пробую это решение Retrieving binary file content using Javascript, base64 encode it and reverse-decode it using Python, но конвертировать в базу-64 не работает для меня! Это что-то не так.

Я получаю двоичный ответ строки с сервера, и я хочу преобразовать его в base-64, чтобы я мог создать файл у него и показать его пользователю. Это ответ я получаю от сервера к PNG изображений, например:

�PNG 

IHDRrP6�tEXtSoftwareAdobe ImageReadyq�e<�IDATx�b���?�#6��g��T=;��� >č�&g��:��A�@���LX��0�A�T >[40f��H��>0`B 
#��<��0a�+���b� 
�o����­o0��~�7��'�xlP����e��.3<x��A�����~�w��$�@90��� 
`���Ivd�[email protected]�2���F&�ATM��.�p���[���8��p�]�@,�����pyP��q���pB����u�����3l(6A `@qzK�Q���M�8Q�Ӑ&��1�$(�@� R�81H��P�&P�����ҟ1\��V��3P�d��fp0�#;��ld �yt�(���� 
J{�М��>>@{!А�3%[email protected]/� 
0�O�U,{�9IEND�B`� 

Теперь я хочу взять эту бинарную строку и преобразовать его.

Например, реальная база 64 ЧНДА картины:

iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaJJREFUeNpi/P//PwO1ACM2wf9njBWAVD0QOwCxApLUAyA+AMSNjCZnH6DoATqKEYtB/UCqgAiHTAAaWIjTMKBB84FUAgk+WwA0MBFmGBOaixJIDKYEqD4wYEIKI7DXHjz/xTBh+SuGD5//YtUNkm+c9Zzhwq1vMKECqH6IN5G9J+h4AWxQgIMAw/oeZQzDFP0uMzx49otBgJeZ4f1+A7h3GYzPJLJAOQEw0fn1CmCFuADIAgVJdmSXMUBjHe4yyhOb8RlGJqBBDlRNtMgu23DgA8PFW98Z9NU4weGGDnDKA10GC7MPQCwAiqnAkrtweVDYGahxwfmgcEKO5fubdYHhxwbTzwAzbAMoNkESIANgGkD0gbOfcXpLgAceURvg6QwIFsITTaQ4UeHTkCaFHOsLMfIkKOxAuCBSDBSGODFIHqYWlgNQ8iZQEBSa+4HYAJHSnzFcuPkdHFagsDNQ52SI9xFmcDDmhQcjEDsC8+cHbBkdZCCxeXQCtCj6gLMIghoKSnvx0JyBnD4+QAN7IdCQAwTLMxwFJQg/QC8Q0Q0DCDAA/k/PVSx73TkAAAAASUVORK5CYII= 

При использовании любого типа кода, чтобы преобразовать в базу-64 это вернуть эту строку:

77+9UE5HDQoaCgAAAA1JSERSAAAAEwAAABMIBgAAAHJQNu+/vQAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHvv71lPAAAAe+/vUlEQVR477+9Yu+/ve+/ve+/vT8D77+9ACM277+977+9Z++/vRXvv71UPRA7AO+/vQLvv73vv70DID4AxI3vv70mZx/vv73vv70BOu+/vRHvv71B77+9QO+/ve+/vQjvv71MABpY77+977+9MO+/vUHvv73vv71UAgk+WwA0MBFmGBPvv73vv70SSAzvv70E77+9PjBgQgoj77+977+9Hjzvv73vv70wYe+/vSvvv70P77+977+9Yu+/vQ3vv71v77+977+977+977+9wq1vMO+/vQLvv71+77+9N++/ve+/vSfvv714AWxQ77+977+9AO+/ve+/vR5lDO+/vRTvv70uMzx477+977+9Qe+/ve+/ve+/ve+/ve+/vX4D77+9dxnvv73vv70k77+9QDkBMO+/ve+/ve+/vQpg77+977+9AO+/vQIFSXZk77+9MUBjHe+/vTLvv70T77+977+9GUYm77+9QQ5UTe+/ve+/vS7vv71w77+9A++/ve+/vVvvv70Z77+977+9OO+/ve+/ve+/vQ5w77+9A10GC++/vQ9ALADvv73vv73vv73vv73vv71weVDvv70Z77+9ce+/ve+/ve+/vXBC77+977+977+977+9de+/ve+/ve+/vQbvv73vv70AM2wDKDZBEiADYBpA9IGzn3F6S++/vQceURvvv73vv70MCBbvv70TTe+/vThR77+905Am77+9HO+/vQsx77+9JCjvv71A77+9IFIMFO+/vTgxSB7vv70W77+9A1Dvv70mUBAU77+977+977+977+9AO+/vdKfMVzvv73vv70dHFbvv73vv70zUO+/vWTvv73vv70RZnAw77+977+9ByMQOwLvv73vv70HbBkdZCDvv715dALvv70o77+977+977+9CO+/vRoKSnvvv73QnO+/ve+/vT4+QAN7IdCQAwTvv70zHAUlCD9ALxDvv70NAwgwAO+/vU/vv71VLHvvv705AAAAAElFTkTvv71CYO+/vQ== 

Я считаю, это решение для кодирования базировать 64: https://koding.com/Activity/base64-encoding а теперь закодировать ближе к тому, что нужно быть, но до сих пор не поможет:

/VBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDb9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5cf1lPAAAAf1JREFUeP1i/f39PwP9ACM2/f1n/RX9VD0QOwD9Av39AyA+AA39Jmcf/f0BOv0R/UH9QP39CP1MABpY/f0w/UH9/VQCCT5bADQwEWYYE/39EkgM/QT9PjBgQgoj/f0ePP39MGH9K/0P/f1i/Q39b/39/f2tbzD9Av1+/Tf9/Sf9eAFsUP39AP39HmUM/RT9LjM8eP39Qf39/f39fgP9dxn9/ST9QDkBMP39/Qpg/f0A/QIFSXZk/TFAYx39Mv0T/f0ZRib9QQ5UTf39Lv1w/QP9/Vv9Gf39OP39/Q5w/QNdBgv9D0AsAP39/f39cHlQ/Rn9cf39/XBC/f39/XX9/f0G/f0AM2wDKDZBEiADYBpAx99xekv9Bx5RG/39DAgW/RNN/ThR/dAm/Rz9CzH9JCj9QP0gUgwU/TgxSB79Fv0DUP0mUBAU/f39/QD9nzFc/f0dHFb9/TNQ/WT9/RFmcDD9/QcjEDsC/f0HbBkdZCD9eXQC/Sj9/f0I/RoKSnv9HP39Pj5AA3shEAME/TMcBSUIP0AvEP0NAwgwAP1P/VUse/05AAAAAElFTkT9QmD9 

Я также стараюсь, чтобы здесь: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data без преобразования в base-64 и с объектами 'arrayBuffer' и 'Blob', но изображение не отображалось. Единственный способ показать картинку, когда я конвертирую в правильную базу-64, а затем создать arraybuffer и инициализировать Blob с ним. Но проблема такая же - я не могу преобразовать свои данные, чтобы исправить базу-64.

может кто-нибудь спасти меня пожалуйста ??

Спасибо!

+0

'Я получаю строковый двоичный ответ от сервера' - покажите код, который получает этот« строковый двоичный файл »... у вашего браузера есть функция' btoa'? –

+0

Я имею в виду, что ответ представляет собой двоичные данные, но эти двоичные данные находятся в строке (я приведу пример ответа на вопрос). Код - это простой запрос «POST» с сервера. Спасибо! – OriEng

+0

'Я приводил пример ответа на вопрос' - я спросил, как вы получили ответ, я вижу ответ, который вы опубликовали. Я не рассматривал этот вопрос для хихиканья, но это может помочь мне дать вам ответ, который не требует какой-то бесполезной раздутой библиотеки –

ответ

0

Моя проблема решена. Я использую плагин dropzone, чтобы получить ответ от сервера, и из-за этого я получаю двоичные данные в виде текстового ответа, и это создает мои проблемы. Я просто пойти на dropzone.js и изменить 2 незначительные вещи, чтобы получить ответ на тип ArrayBuffer:

 xhr.responseType = 'arraybuffer'; (line 1246) 

Это новая линия, чтобы получить ответ на тип ArrayBuffer, а затем создать объект блоб из ArrayBuffer ответ .

  response = xhr.response; (line 1305) 

Изменить его, чтобы получить ответ inseted TextRrsponse ..

Я надеюсь, что это поможет кому-то ... Спасибо всем!

0

Здесь link этой маленькой библиотеке, которая имеет значение, может быть полезна для u. Он может преобразовать base64 в двоичный и наоборот.

+0

Спасибо, но его не преобразовать вправо двоичные данные): – OriEng

+1

Вы пробуйте эту библиотеку? Я просто копирую метод для своего проекта, но он конвертирует двоичный файл только для AAAAAAAAA ..... спасибо. – OriEng

 Смежные вопросы

  • Нет связанных вопросов^_^