not*_*oad 13 python file-upload tornado
我正试图在龙卷风中获得一个简单的图像上传表格.一切正常,文本文件,数据到达服务器并被写入文件系统.但是,当我尝试上传二进制文件(特别是jpeg或png)时,它会被破坏.打开上传的PNG的结果导致错误"由ascii转换损坏的PNG文件"和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()
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
龙卷风服务器在win server 2008上运行,如果相关的话.
编辑:该死,简单修复.我需要使用open(filename,'wb')以二进制模式写入.希望这有助于从谷歌到这里的人.