我是Tornado Web框架的新手。任何人都可以告诉我如何使用龙卷风框架通过网络浏览器下载文件。
答案 0 :(得分:11)
Tornado附带同步和异步HTTP客户端。您可以找到文档here。
以下是从上面链接的页面中获取的同步示例:
from tornado import httpclient
http_client = httpclient.HTTPClient()
try:
response = http_client.fetch(url)
print(response.body)
except httpclient.HTTPError as e:
print("Error:", e)
http_client.close()
如果要将结果输出保存到磁盘,而不是打印数据,请将其写入文件。请注意,即使在Python 3中,Tornado也会将响应主体返回为字符串:
with open(output_file_name) as f:
f.write(response.body)
当然,如果响应数据非常大,您需要以块的形式下载文件并即时写入磁盘(see here)。
最后,如果由于某些原因你没有被Tornado限制,我强烈推荐requests
库(或grequests
进行异步调用。)
编辑:
要将静态文件作为下载提供,请在处理程序的get
中执行以下操作:
def get(self):
file_name = 'file.ext'
buf_size = 4096
self.set_header('Content-Type', 'application/octet-stream')
self.set_header('Content-Disposition', 'attachment; filename=' + file_name)
with open(file_name, 'r') as f:
while True:
data = f.read(buf_size)
if not data:
break
self.write(data)
self.finish()
Python 3中可能有也可能没有字节/字符串问题。