我创建了一个简单的线程 python 服务器,我有两个格式参数,一个是 JSON(返回字符串数据),另一个是 zip。当用户选择 format=zip 作为输入参数之一时,我需要服务器将 zip 文件返回给用户。我应该如何在我的服务器的 do_GET() 上将文件返回给用户?我是只返回可以下载文件的 URL,还是可以直接将文件发回给用户?如果选项二是可能的,我该怎么做?
谢谢
我创建了一个简单的线程 python 服务器,我有两个格式参数,一个是 JSON(返回字符串数据),另一个是 zip。当用户选择 format=zip 作为输入参数之一时,我需要服务器将 zip 文件返回给用户。我应该如何在我的服务器的 do_GET() 上将文件返回给用户?我是只返回可以下载文件的 URL,还是可以直接将文件发回给用户?如果选项二是可能的,我该怎么做?
谢谢
您应该将文件直接发送回用户,并添加Content-Type
具有正确媒体类型的标头,例如application/zip
.
所以标题可能如下所示:
Content-Type: application/zip
问题是我在尝试返回它之前没有关闭 zipfile 对象。文件上似乎有锁。
要使用 GET 从简单的 http python 服务器返回 zip 文件,您需要执行以下操作:
将标题设置为“应用程序/zip”
self.send_header("Content-type:", "application/zip")
使用 zipfile 模块创建 zip 文件
使用文件路径(例如:c:/temp/zipfile.zip)使用 'rb' 方法打开文件以读取二进制信息
openObj = open( < path > , 'rb')
将对象返回给浏览器
openObj.close()
del openObj
self.wfile.write(openObj.read())
就是这样。谢谢大家的帮助。