我在单独的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'
请指导我解决这个问题。
2条答案
按热度按时间yks3o0rb1#
在您看来,接收到的
request.FILES['file']
是UploadedFile
(请参见此处的文档),它是File
的子类。requests
库希望您发送文件的二进制内容。您可以使用(file = request.FILES['file']
)访问文件的内容:read()
:files={"file": file.read()}
file
属性:files = {"file": file.file}
虽然我不确定这是否能给予你控制它是否是二进制的。此外,您应该删除由
requests
包自动添加的"content-type"
头,这似乎会打乱您的请求主体。0ejtzxu12#
html中
input
的id
是什么?更新:
request.FILES
是一个dict,它通过对象在html上的id引用对象。