我在单独的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'
请引导我解决此问题。
答案 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引用对象。