0
我知道如何提供靜態文件/ PNG等,因爲它們被保存在一些網絡靜態路徑下。龍捲風服務器提供文件
如何在路徑上提供文件服務,例如/usr/local/data/table.csv?
另外,我在想,如果我可以顯示的頁面明智的結果(分頁),但我更關心的是服務於任意位置的文件+他們留即使我從本地刪除(我的意思是,一旦上傳/緩存)。 [這可能是一個獨立的疑問句雖然]
我知道如何提供靜態文件/ PNG等,因爲它們被保存在一些網絡靜態路徑下。龍捲風服務器提供文件
如何在路徑上提供文件服務,例如/usr/local/data/table.csv?
另外,我在想,如果我可以顯示的頁面明智的結果(分頁),但我更關心的是服務於任意位置的文件+他們留即使我從本地刪除(我的意思是,一旦上傳/緩存)。 [這可能是一個獨立的疑問句雖然]
在最基本的層面上,你需要閱讀您的文件,並將其寫入響應:
import os.path
from mimetypes import guess_type
import tornado.web
import tornado.httpserver
BASEDIR_NAME = os.path.dirname(__file__)
BASEDIR_PATH = os.path.abspath(BASEDIR_NAME)
FILES_ROOT = os.path.join(BASEDIR_PATH, 'files')
class FileHandler(tornado.web.RequestHandler):
def get(self, path):
file_location = os.path.join(FILES_ROOT, path)
if not os.path.isfile(file_location):
raise tornado.web.HTTPError(status_code=404)
content_type, _ = guess_type(file_location)
self.add_header('Content-Type', content_type)
with open(file_location) as source_file:
self.write(source_file.read())
app = tornado.web.Application([
tornado.web.url(r"/(.+)", FileHandler),
])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(8080, address='localhost')
tornado.ioloop.IOLoop.instance().start()
(免責聲明這是一個快速的書面記錄,它幾乎肯定不會在所有情況下工作,所以要小心。)