2012-02-13 89 views
3

我正在向django應用程序REST接口進行文件上傳POST API請求。這個請求是由另一個django應用程序視圖進行的,該視圖正在從表單接收文件。我正在使用海報模塊Django request.FILES爲空

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__' 

回答

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