如何同时上传和下载文件

0 投票
1 回答
642 浏览
提问于 2025-04-18 03:25

我正在尝试写一个小的Tornado服务器,让用户可以通过HTML的form上传文件,然后把链接给其他人,这样他们就可以在文件上传的同时下载这个文件。

目前我的想法是,data应该是一个由上传生成的某种Iterator,然后下载的时候再去读取它,但现在的问题是,整个文件都被写入到data里面了。

我看到有一些人讨论过Tornado的分块文件上传,但找不到相关的参考页面。

import os
import tornado.web
import tornado.ioloop

settings = {'debug': True} 

data = None

# assumes an <input type="file" name="file" />
class ShareHandler(tornado.web.RequestHandler):
    def post(self, uri):
        data = self.request.files['file'][0]['body']

class FetchHandler(tornado.web.RequestHandler):
    def get(self, uri):
        for line in data:
            self.write(line)

handlers = [
    (r'/share/(.*)', ShareHandler),
    (r'/fetch/(.*)', FetchHandler),
]

application = tornado.web.Application(handlers, **settings)
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()

1 个回答

0

Tornado不支持流式上传。这是关于它最常被问到的问题之一。=) 维护者正在积极实现这个功能,可以在这里关注进展:

https://github.com/facebook/tornado/pull/1021

撰写回答