Django中图像上传失败,出现MultiValueDictKeyError

ohtdti5x  于 2023-02-20  发布在  Go
关注(0)|答案(2)|浏览(138)

我在一个单独的Django项目中从我的视图调用图像上传API(DjangoRESTAPI)。

我的观点

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'
请指导我解决这个问题。

bf1o4zei

bf1o4zei1#

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

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

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

ulydmbyx

ulydmbyx2#

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

相关问题