Вот ситуация:питон опубликовать StringIO используя плакат
Я использую PIL для обработки изображения, то я сохраняю его в объект StringIO. Теперь, я хочу, чтобы POST объект StringIO через плакат. Но, я не могу получить изображение в request.FILES dict. У меня есть несколько часов в Интернете, я нашел этот вопрос, python : post data within stringIO through poster? Я пробовал, но не работал.
Итак, я прочитал исходный код плаката и попытался получить атрибут «имя» параметра файла, подобного объекту, но похоже, что объект StringIO не имеет атрибута «name». Таким образом, имя файла и тип файла являются None
if hasattr(value, 'read'):
# Looks like a file object
filename = getattr(value, 'name', None)
if filename is not None:
filetype = mimetypes.guess_type(filename)[0]
else:
filetype = None
retval.append(cls(name=name, filename=filename,
filetype=filetype, fileobj=value))
else:
retval.append(cls(name, value))
Итак, я указать имя отнесение объекта StringIO и, кажется, отлично работает.
im_tmp = Image.open(StringIO(bits))
//bits: the binary chars of a image
im_res = ImageAPI.process(im_tmp, mode, width, height)
//ImageAPI: a class that use PIL methods to process image
output = StringIO()
im_res.save(output, format='PNG')
output.name = 'tmp.png'
//I add above code and it works
call(url_str=url, file_dict={'file':output})
//call: package of poster
Правильно ли я сделал? Каков правильный способ POST объекта StringIO через плакат?
спасибо, но в проекте используется плакат, и я не могу изменить структуру. – Jinvan