2016-11-05 139 views
0

我知道如何提供靜態文件/ PNG等,因爲它們被保存在一些網絡靜態路徑下。龍捲風服務器提供文件

如何在路徑上提供文件服務,例如/usr/local/data/table.csv?

另外,我在想,如果我可以顯示的頁面明智的結果(分頁),但我更關心的是服務於任意位置的文件+他們留即使我從本地刪除(我的意思是,一旦上傳/緩存)。 [這可能是一個獨立的疑問句雖然]

回答

0

在最基本的層面上,你需要閱讀您的文件,並將其寫入響應:

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() 

(免責聲明這是一個快速的書面記錄,它幾乎肯定不會在所有情況下工作,所以要小心。)