Django request.FILES是空的

时间:2012-02-13 07:02:22

标签: django

我正在向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__'

1 个答案:

答案 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