DRF file.read()包含HTML标头信息,而不仅仅是文件内容

时间:2017-07-25 15:06:42

标签: django django-rest-framework python-requests

我不确定问题出在哪里,但file.read()应该只给我文件内容。我打印出前200个字符并获取内容标题,而不仅仅是上传的文件数据。

上传

local_file = os.path.join(basedir, 'a.jpg')
url = baseurl + 'a.jpg'
files = {'file': open(local_file, 'rb')}
headers = {'Authorization': 'Token sometoken'}
r = requests.put(url, files=files, headers=headers)
print(r.status_code)

查看

class FileUploadView(BaseAPIView):
    parser_classes = (FileUploadParser,)

    def put(self, request, filename):
        file_obj = request.FILES['file']
        data = file_obj.read()
        print(data[:200])
        return Response(status=HTTP_204_NO_CONTENT)

输出的输出是:

b' - 139822073d614ac7935850dc6d9d06cd \ r \ nConContent-Disposition:form-data; NAME = “文件”;文件名= “A.JPG” \ r \ n \ r \ n \ XFF \ XD8 \ XFF \ xe0 \ X00 \ x10JFIF \ X00 \ X01 \ X01 \ X00 \ X00 \ X01 \ X00 \ X01 \ X00 \ X00 \ XFF \ XE1!(EXIF \ X00 \ x00II * \ X00 \ X08 \ X00 \ X00 \ X00 \ r \ X00 \ X0B \ X00 \ X02 \ X00 \ r \ X00 \ X00 \ X00 \的Xaa \ X00 \ X00 \ X00 \ X00 \ X01 \吨\ X00 \ X01 \ X00 \ X00 \ x00x \ X03 \ X00 \ X00 \ X01 \ X01 \吨\ X00 \ X01 \ X00 \ X00 \ X00 \ xe8 \ X03 \ X00 \ X00 \ X0F \ X01 \ X02 \ X00 \ X04 \ X00 \ X00 \ x00HTC \ X00 \ X10 \ X01 \ X02 \ X00 \ X0B \ X00 \ X00 \ X00 \ XB8 \ X00 \ X00'

为什么我会看到所有这些额外数据,而不仅仅是文件内容? Dis一直让我疯狂,可能会变得简单。

1 个答案:

答案 0 :(得分:0)

使用FileUploadParser,您需要发送带有数据的文件内容

with open(local_file, 'rb') as fh:
    r = requests.put(url, data=fh, headers=headers, verify=False)