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'
我怎么会看到所有这些额外的数据,文件内容?派息已经快把我逼疯,并很可能将是一些简单。
随着FileUploadParser您需要发送的数据
with open(local_file, 'rb') as fh:
r = requests.put(url, data=fh, headers=headers, verify=False)
时许文件内容不完全确定,但也许尝试可能尝试切换到“POST”或显式设置内容类型为“multipart/form-data”? – Cory
谢谢@Cory。我得到了它的工作,但我要切换到多部分。似乎是更好的选择。 – Dax