图片上传失败,出现MultiValueDictKeyError:DJANGO

时间:2019-02-13 13:35:56

标签: python django file

我在单独的django项目中从视图中调用Image upload 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:
                   ........

当我尝试上传图片时。 我在FILES <MultiValueDict: {}>的api中遇到错误。 django.utils.datastructures.MultiValueDictKeyError: 'file'请引导我解决此问题。

2 个答案:

答案 0 :(得分:1)

您认为接收到的request.FILES['file']UploadedFile(请参阅docs here),它是File的子类。

requests库希望您发布文件的二进制内容。您可以使用(file = request.FILES['file'])访问文件的内容:

  • read()files={"file": file.read()}
  • file属性:files = {"file": file.file},尽管我不确定这是否可以控制二进制。

此外,您应该删除"content-type"包自动添加的requests标头。这似乎弄乱了您的请求内容。

答案 1 :(得分:0)

HTML id中的input是什么?

更新:

request.FILES是一个字典,它通过html上的ID引用对象。