python 图像上传失败,出现MultiValueDictKeyError:DJANGO

bf1o4zei  于 2023-02-02  发布在  Python
关注(0)|答案(2)|浏览(114)

我在单独的Django项目中从我的视图调用图像上传API(Django rest api)

我的观点

if request.method == 'POST' and request.FILES['file']:
    try:
        resp = requests.post(
            "http://19.******/BankImage_API",
            files = {"file" :request.FILES['file']},
            headers={"content-type": "multipart/form-data",
                "Authorization": "Token 71117971*************"
                }, verify=False)

API

class Bankimageapi(APIView):
    def post(self, request):
        if request.method == 'POST' and request.FILES['file']:
            try:
                ........

当我试图上传图像时,我在API中得到错误,其中FILES <MultiValueDict: {}> . django.utils.datastructures.MultiValueDictKeyError: 'file'请指导我解决这个问题。

yks3o0rb

yks3o0rb1#

在您看来,接收到的request.FILES['file']UploadedFile(请参见此处的文档),它是File的子类。
requests库希望您发送文件的二进制内容。您可以使用(file = request.FILES['file'])访问文件的内容:

  • read()files={"file": file.read()}
  • file属性:files = {"file": file.file}虽然我不确定这是否能给予你控制它是否是二进制的。

此外,您应该删除由requests包自动添加的"content-type"头,这似乎会打乱您的请求主体。

0ejtzxu1

0ejtzxu12#

html中inputid是什么?
更新:
request.FILES是一个dict,它通过对象在html上的id引用对象。

相关问题