我正在向django app REST界面发送文件上传POST API请求。此请求来自另一个从表单接收文件的django应用程序视图。我正在使用海报模块
image = request.FILES['image']
from utils.poster.encode import multipart_encode
from utils.poster.streaminghttp import register_openers
register_openers()
datagen, headers = multipart_encode({'file':image.read()})
response = urlfetch.fetch(url="url",
payload=datagen,
method=urlfetch.POST,
headers=headers)
我错过了任何标题吗? django如何处理multipart / form-data? 这是我得到的错误。
multipart_yielder instance has no attribute '__len__'
答案 0 :(得分:3)
GAE的UrlFetch无法使用multipart_encode()返回的有效负载输出。 UrlFetch.fetch
正在有效负载上执行len()
,multipart_encode
返回的有效负载是Python生成器,通常不支持len()
。
解决方法是首先创建一个有效负载字符串,但它会为大文件使用大量内存。
datagen, headers = multipart_encode({'file':image.read()})
data = str().join(datagen)
response = urlfetch.fetch(url="url",
payload=data ,
method=urlfetch.POST,
headers=headers)
报告了问题here。