2012-02-13 7 views
3

Я делаю загрузку файла POST API-запрос в интерфейс REST для django. Этот запрос создается из другого приложения app 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's 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.

Смежные вопросы