通过post请求传输django二进制文件数据

时间:2016-10-06 12:59:14

标签: django post binary-data

我正在使用django rest框架和aws S3存储。我正在将视频文件上传到S3存储桶并以django模型的二进制字段格式保存加密密钥(s3存储的要求)。现在我需要使用post请求将此密钥传递给另一个远程django服务器。当我使用请求库传递密钥时,当我从其他服务器上的post请求中提取它并且我无法使用它时,它会以某种方式更改。如果有人告诉我如何使用django请求库通过post请求传递二进制字段数据,将非常感激。我发布邮件请求的代码是

import requests enc_key = some_object.key # key is a models.BinaryField() data = {'enc_key' : enc_key} response = requests.post(url, data = data)

在另一台服务器上,我从post请求中提取enc_key,如下所示

enc_key = request.POST['enc_key']

但此密钥不再可用。

1 个答案:

答案 0 :(得分:0)

enc_key真的是models.BinaryField的实例吗?在python3的情况下,它应该是memoryview

顺便说一下,requests完全与Django分开,你应该尝试在没有Django的情况下发布二进制数据,然后如果是neceassary则使用框架进行争夺。也许你可以直接从远程机器从数据库中检索数据?如果没有,请尝试以这种方式发送测试二进制数据:

res = requests.post(url=remote_url,
                    data=data,
                    headers={'Content-Type': 'application/octet-stream'})