請看下面的例子:如何服務於任何文件類型與Python的BaseHTTPRequestHandler
import string,cgi,time
from os import curdir, sep
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
try:
if self.path.endswith(".html"):
f = open(curdir + sep + self.path) #self.path has /test.html
#note that this potentially makes every file on your computer readable by the internet
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(f.read())
f.close()
return
except IOError:
self.send_error(404,'File Not Found: %s' % self.path)
def main():
try:
server = HTTPServer(('', 80), MyHandler)
print 'started httpserver...'
server.serve_forever()
except KeyboardInterrupt:
print '^C received, shutting down server'
server.socket.close()
if __name__ == '__main__':
main()
如果我想服務器的ZIP文件還......我會怎麼做呢? 我不認爲這條線會正常工作?
self.wfile.write(f.read())
有人可以解釋爲什麼打開電話()「可能使您的計算機上的每個文件都可讀」嗎?在這個例子中,你如何保護它免於提供文件? – brooksbp 2011-10-28 23:42:02
@brooksbp我認爲他的意思是說用戶可以輸入一個路徑來導航到您計算機上的另一個目錄,例如上一個或多個目錄。但只有html文件可以使用上面的代碼訪問。 – Anthony 2016-01-25 21:37:26