我创建了一个简单的线程python服务器,我有两个格式参数,一个是JSON(返回字符串数据),另一个是zip。当用户选择format = zip作为输入参数之一时,我需要服务器将zip文件返回给用户。如何在do_GET()上为我的服务器将文件返回给用户?我只是返回可以下载文件的URL,还是可以直接将文件发送给用户?如果可以选择第二种,我该怎么做?
谢谢
答案 0 :(得分:0)
您应该直接将文件发回给用户,并使用正确的media type添加Content-Type
标头,例如application/zip
。
所以标题看起来像这样:
Content-Type: application/zip
答案 1 :(得分:0)
问题是我在尝试返回之前没有关闭zipfile对象。它似乎锁定了文件。
要使用GET从简单的http python服务器返回zip文件,您需要执行以下操作:
将标题设置为“application / 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())
就是这样。谢谢大家的帮助。