V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tornado Documentation
http://www.v2ex.com/tornado/
Tornado on GitHub
https://github.com/facebook/tornado/
Tornado Gists
http://tornadogists.org/
sylvos
V2EX  ›  Tornado

请教 tornado 文件上传问题

  •  
  •   sylvos · 2017-01-05 11:59:03 +08:00 · 8733 次点击
    这是一个创建于 2872 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用下面的代码做文件上传,在自己电脑测试能够成功上传,到局域网其他电脑测试,显示 finished!了,但是没看到文件,请问前辈,是什么原因呢?该代码运行在 xp 系统上,上传文件夹已设置最高权限。
    import tornado.ioloop
    import tornado.web
    import shutil
    import os

    class UploadFileHandler(tornado.web.RequestHandler):
    def get(self):
    self.write('''
    <html>
    <head><title>Upload File</title></head>
    <body>
    <form action='file' enctype="multipart/form-data" method='post'>
    <input type='file' name='file'/><br/>
    <input type='submit' value='submit'/>
    </form>
    </body>
    </html>
    ''')

    def post(self):
    upload_path=os.path.join(os.path.dirname(__file__),'files') #文件的暂存路径
    file_metas=self.request.files['file'] #提取表单中‘ name ’为‘ file ’的文件元数据
    for meta in file_metas:
    filename=meta['filename']
    filepath=os.path.join(upload_path,filename)
    with open(filepath,'wb') as up: #有些文件需要已二进制的形式存储,实际中可以更改
    up.write(meta['body'])
    self.write('finished!')

    app=tornado.web.Application([
    (r'/file',UploadFileHandler),
    ])

    if __name__ == '__main__':
    app.listen(3000)
    tornado.ioloop.IOLoop.instance().start()
    2 条回复    2017-01-05 13:26:15 +08:00
    kindjeff
        1
    kindjeff  
       2017-01-05 12:09:13 +08:00   ❤️ 1
    试一下这个代码能不能在 xp 上跑。
    sylvos
        2
    sylvos  
    OP
       2017-01-05 13:26:15 +08:00
    @kindjeff 可以呀,在我自己电脑都上传成功了的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2300 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:46 · PVG 09:46 · LAX 17:46 · JFK 20:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.