T.N*_*Nel 3 python json odoo odoo-11
我有一个为特定模型创建新记录的控制器。
该模型包含一个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)
Run Code Online (Sandbox Code Playgroud)
我的问题是我应该如何从连接到服务器的远程应用程序发送文件?
我可能必须将其作为字符串发送,因为它是以 json 格式发送的。我必须如何修改我的控制器才能正确接收它?
我将不胜感激,提供一个将文件转换为可通过 Json 发送的字符串的代码示例。我还必须从任何语言转换它,因为我正在构建一个 API,二进制字段将识别的标准是什么?
小智 5
正如我在评论中所说,您可能需要以二进制形式读取文件内容,使用 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)
Run Code Online (Sandbox Code Playgroud)