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

问题描述:

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

上传

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 \ nContent处置:形状数据; 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 \ x00 \ x04 \ x00 \ x10 \ x01 \ x02 \ x00 \ x0b \ x00 \ x00 \ x00 \ x00 \ xb8 \ x00 \ x00'

我怎么会看到所有这些额外的数据,文件内容?派息已经快把我逼疯,并很可能将是一些简单。

+0

时许文件内容不完全确定,但也许尝试可能尝试切换到“POST”或显式设置内容类型为“multipart/form-data”? – Cory

+0

谢谢@Cory。我得到了它的工作,但我要切换到多部分。似乎是更好的选择。 – Dax

随着FileUploadParser您需要发送的数据

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