使HTTPServer下载文件而不显示文本

时间:2019-06-21 14:27:09

标签: python-3.x server http-headers

我正在一个项目中,客户需要单击链接才能从另一台服务器下载批处理文件。

所以我的问题是,批处理文件的内容在Chrome中显示为文本-但没有像我希望的那样下载附件(例如另存为按钮)。

我尝试使用HTTP下载属性,但这仅适用于相对路径,不适用于http://example.com/batch.bat

<a href="http://100.100.100.10:8000/L33480.bat" download="" target="_blank">Download batch</a>

我偶然发现了类似的帖子,但是似乎没有一个解决我的问题的。

这是我的代码。但是,文件的行为与我刚键入通常在Chrome中显示批处理文件内容的python -m http.server时的行为相同。

from http.server import BaseHTTPRequestHandler, HTTPServer

class MyServer(BaseHTTPRequestHandler):

    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'application/bat')
        self.send_header('Content-Disposition', 'attachment; filename="test.bat"')
        self.end_headers()

        # Open the file
        with open('/myFile.bat', 'rb') as file: 
            self.wfile.write(file.read()) # Read the file and send the contents 

myServer = HTTPServer(('localhost', 8000), MyServer)
myServer.serve_forever()
myServer.server_close()

0 个答案:

没有答案