base64 encode in python, decode in javascript
base64 encode in python, decode in javascript
Python 后端读取二进制文件,base64 对其进行编码,将其插入 JSON 文档并将其发送到 JavaScript 前端:
#Python
with open('some_binary_file', 'rb') as in_file:
return base64.b64encode(in_file.read()).decode('utf-8')
JavaScript 前端从 JSON 文档中获取 base64 编码的字符串,并将其转换为二进制 blob:
#JavaScript
b64_string = response['b64_string'];
decoded_file = atob(b64_string);
blob = new Blob([decoded_file], {type: 'application/octet-stream'});
不幸的是,下载 blob 时编码似乎是错误的,但我不确定问题出在哪里。 例如,它是一个我无法再打开的 Excel 文件。在Python部分,我尝试了不同的解码器('ascii','latin1'(,但这并没有区别。我的代码有问题吗?
我在这里找到了答案。问题出在 JavaScript 方面。似乎仅将atob
应用于 base64 编码字符串不适用于二进制数据。您必须将其转换为类型化字节数组。我最终做了什么(LiveScript(:
byte_chars = atob base64_str
byte_numbers = [byte_chars.charCodeAt(index) for bc, index in byte_chars]
byte_array = new Uint8Array byte_numbers
blob = new Blob [byte_array], {type: 'application/octet-stream'}
相关文章:
- Node.js's Buffer.writeFloatBE in Javascript
- Setting default onclick behavior for <img> tag in gene
- Lucene Search in Alfresco
- grep in JQuery to C#
- write HTML in JavaScript
- jQuery setTimeOut: in for-loop
- SetTimeout and clearTimeout in Javascript
- lightbox in html 5 and javascript
- HTMLInputElement in IE7
- Mongodb$in以与数组中相同的顺序获取结果
- element.dataset in Internet Explorer
- jQuery parent() in table
- Instagram oauth flow in angularjs
- Decode Javascript
- In循环的In运算符前后
- Decode URL Javascript/JQuery
- 如何使用for in循环在javascript中显示对象中的对象
- Jquery change onchange in onload
- AES encode in Delphi XE4 decode in Javascript
- base64 encode in python, decode in javascript