gpt4 book ai didi

python - 无法在带有python http服务器的浏览器中查看文件

转载 作者:太空狗 更新时间:2023-10-30 02:57:18 26 4
gpt4 key购买 nike

我正在使用命令为远程计算机上的文件夹创建一个 python httpserver:

python -m SimpleHTTPServer 9999

但是我无法使用它在浏览器中查看文件。只要点击链接,文件就会被下载。有没有办法创建一个服务器,以便我只能在浏览器中查看文件。

最佳答案

要使浏览器以内联方式打开文件而不是下载文件,您必须使用适当的 http Content header 提供文件。

使内容在浏览器选项卡中内联加载而不是下载的原因是标题 Content-Disposition: inline

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

要添加这些 header ,您可以使用自定义的子类化默认的 SimpleHTTPRequestHandler

这就是如何使用 python 3 完成的。如果必须使用 python 2,则必须修改导入和可能的其他一些部分。

把它放在一个可执行的脚本文件中,你可以调用 myserver.py 并像这样运行它:./myserver.py 9999

#!/usr/bin/env python3

from http.server import SimpleHTTPRequestHandler, test
import argparse


class InlineHandler(SimpleHTTPRequestHandler):

def end_headers(self):
mimetype = self.guess_type(self.path)
is_file = not self.path.endswith('/')
# This part adds extra headers for some file types.
if is_file and mimetype in ['text/plain', 'application/octet-stream']:
self.send_header('Content-Type', 'text/plain')
self.send_header('Content-Disposition', 'inline')
super().end_headers()

# The following is based on the standard library implementation
# https://github.com/python/cpython/blob/3.6/Lib/http/server.py#L1195
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--bind', '-b', default='', metavar='ADDRESS',
help='Specify alternate bind address '
'[default: all interfaces]')
parser.add_argument('port', action='store',
default=8000, type=int,
nargs='?',
help='Specify alternate port [default: 8000]')
args = parser.parse_args()
test(InlineHandler, port=args.port, bind=args.bind)

关于python - 无法在带有python http服务器的浏览器中查看文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37585147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com