Подтвердить что ты не робот

Загрузка изображений на веб-сервере торнадо

Я пытаюсь получить простую форму для загрузки изображений в торнадо. все отлично работает с текстовыми файлами, данные поступают на сервер и записываются в файловую систему. однако, когда я пытаюсь загрузить двоичный файл (jpeg или png, в частности), он становится поврежденным. открытие результата загруженного PNG приводит к ошибке "PNG файл, поврежденный преобразованием ascii", а jpeg дает "jpeg datastream не содержит изображения". что я делаю неправильно?

питон:

class FileUploadHandler(BaseHandler):
    def post(self):
    reg=self.get_argument('regid', None)
    self.write(dir(self.request.files['myfile'][0]))
    if reg:
        reg=Registration(id=reg)
        f=open(ROOT_APP_PATH+'/static/clubfiles/{0}/{1}/{2}'\
            .format(reg.club.id, reg.id, uuid()), 'w')
        f.write(self.request.files['myfile'][0]['body'])
        f.close()

HTML:

   <form    target=iframe 
            action="/do_file_upload/" 
            enctype="multipart/form-data; charset=utf-8"
            method="post">
        <input type=hidden name=regid value=${element.get_relevant_registration().id}>
        <input name=myfile type=file onchange="$(this).parent().submit()">
    </form>

сервер торнадо работает на сервере win 2008, если это имеет значение.

Изменить: черт возьми, просто исправить. Мне нужно было использовать open (filename, 'wb') для записи в двоичном режиме. надеюсь, это поможет кому-то, кто приземляется здесь из Google.

4b9b3361