如何转换文件以通过JSON(到Odoo控制器)发送它

2024-03-28 10:59:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个控制器,可以为特定模型创建一个新记录。
此模型包含一个fields.Binary。在

控制器如下所示:

@http.route('/mymodel/create', type='json', method='POST', auth='user')
def create_record(self, **kwargs):
    """
    @params:
    'field1': string
    'field2': int
    'binaryField': binary
    """
    values = {'my_model_field_1': kwargs.get('field1'),
              'my_model_field_2': kwargs.get('field2'),
              'my_model_binary_field': kwargs.get('binaryField')}
    request.env['my_model'].create(values)

我的问题是如何从连接到服务器的远程应用程序发送文件?在

我可能不得不以字符串的形式发送它,因为它是以json格式发送的。如何修改控制器才能正确接收?
如果能提供一个将文件转换为可以通过Json发送的字符串的代码示例,我将不胜感激。我还必须从任何语言转换它,因为我正在构建一个API,二进制字段将识别的标准是什么?在


Tags: 文件模型jsonfieldgetmodelmycreate
1条回答
网友
1楼 · 发布于 2024-03-28 10:59:32

正如我在评论中所说,您可能需要以二进制形式读取文件内容,使用base64对其进行编码,然后解码编码的字节以将其放入JSON中。在

Python3实现这一点的代码片段:

import base64
import json

data = {}

# read raw file bytes
with open('filename','rb') as myfile:
        file_bytes = myfile.read()

# encode, decode and put it in the JSON
data['file'] = base64.encodebytes(file_bytes).decode('ascii')

# optionally serialize the JSON
serialized_json = json.dumps(data)

相关问题 更多 >