简体   繁体   English

信息以base64编码开头

[英]Prepend information in base64 encoding

Here is an answer which gives some information on how to base64 encode a file. 这是一个给出有关如何对文件进行base64编码的信息的答案 However, I also want to pass in the filetype and mimetype. 但是,我也想传递文件类型和mimetype。 for the information in the base64 encoded string. 有关base64编码字符串中的信息。

So far I have for my base64 string: 到目前为止,我有我的base64字符串:

x=base64.b64encode(open('/Users/user/Desktop/img.PNG').read())

What is the correct information to prepend, and how would I do this? 什么是正确的前置信息,我将如何做?

It seems like the following is how I would get the base64 file information to pass to the server: 似乎以下是如何获取base64文件信息以传递到服务器的方法:

file = '/Users/user/Desktop/img.PNG'
prepend_info = 'data:%s;base64' % mimetypes.guess_type(file)[0]
base_64_data = open(file).read().encode('base64')
image_data_base64 = '%s,%s' % (prepend_info, base_64_data)

This then gives me: 然后这给了我:

data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wB...

Perhaps something along these lines: 也许遵循以下思路:

from __future__ import print_function
import base64
import binascii
import os

def base64_encode_file(filename):
    filetype = os.path.splitext(filename)[1][1:]  # remove leading '.' from ext
    with open(filename) as file:
        data = file.read()
        return base64.b64encode(','.join((filename, filetype, data))), data

filename = 'C:/Users/martin/Desktop/img.PNG'
#filename = '/Users/user/Desktop/img.PNG'

encoded, data = base64_encode_file(filename)
print('encoded: {} (hex file data: {})'.format(encoded, binascii.hexlify(data)))

decoded = base64.b64decode(encoded).split(',', 2)
print('decoded:', decoded[0], decoded[1], binascii.hexlify(decoded[2]))

Output: 输出:

encoded: QzovVXNlcnMvbWFydGluL0Rlc2t0b3AvaW1nLlBORyxQTkcsiVBORwo= 
          (hex file data: 89504e470a)
decoded: C:/Users/martin/Desktop/img.PNG PNG 89504e470a

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM