提供来自 Python 的 http.server 的文件 - 使用文件的正确响应
Serve a file from Python's http.server - correct response with a file
我只是想从 http.server 提供一个 PDF 文件。这是我的代码:
from http.server import BaseHTTPRequestHandler, HTTPServer
class MyServer(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'application/pdf')
self.send_header('Content-Disposition', 'attachment; filename="file.pdf"')
self.end_headers()
# not sure about this part below
self.wfile.write(open('/filepath/file.pdf', 'rb'))
myServer = HTTPServer(('localhost', 8080), MyServer)
myServer.serve_forever()
myServer.server_close()
我不确定现在如何用 file.pdf
回应,而且我一无所获。我确信 headers 是正确的,但我无法发送实际文件。
看来您正在正确设置 headers。我已经完成了您仅尝试使用文本数据 (CSV) 进行的操作。如图所示,您的代码存在一个问题,即您正在尝试写入文件 object 而不是实际数据。您需要执行 read
才能实际获取二进制数据。
def do_GET(self):
# Your header stuff here...
# Open the file
with open('/filepath/file.pdf', 'rb') as file:
self.wfile.write(file.read()) # Read the file and send the contents
希望这至少能让你们更接近一点。
我只是想从 http.server 提供一个 PDF 文件。这是我的代码:
from http.server import BaseHTTPRequestHandler, HTTPServer
class MyServer(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'application/pdf')
self.send_header('Content-Disposition', 'attachment; filename="file.pdf"')
self.end_headers()
# not sure about this part below
self.wfile.write(open('/filepath/file.pdf', 'rb'))
myServer = HTTPServer(('localhost', 8080), MyServer)
myServer.serve_forever()
myServer.server_close()
我不确定现在如何用 file.pdf
回应,而且我一无所获。我确信 headers 是正确的,但我无法发送实际文件。
看来您正在正确设置 headers。我已经完成了您仅尝试使用文本数据 (CSV) 进行的操作。如图所示,您的代码存在一个问题,即您正在尝试写入文件 object 而不是实际数据。您需要执行 read
才能实际获取二进制数据。
def do_GET(self):
# Your header stuff here...
# Open the file
with open('/filepath/file.pdf', 'rb') as file:
self.wfile.write(file.read()) # Read the file and send the contents
希望这至少能让你们更接近一点。