GET上的Python服务器返回文件的问题

时间:2014-04-07 11:14:02

标签: python json rest python-2.7 simplehttpserver

我创建了一个简单的线程python服务器,我有两个格式参数,一个是JSON(返回字符串数据),另一个是zip。当用户选择format = zip作为输入参数之一时,我需要服务器将zip文件返回给用户。如何在do_GET()上为我的服务器将文件返回给用户?我只是返回可以下载文件的URL,还是可以直接将文件发送给用户?如果可以选择第二种,我该怎么做?

谢谢

2 个答案:

答案 0 :(得分:0)

您应该直接将文件发回给用户,并使用正确的media type添加Content-Type标头,例如application/zip

所以标题看起来像这样:

Content-Type: application/zip

答案 1 :(得分:0)

问题是我在尝试返回之前没有关闭zipfile对象。它似乎锁定了文件。

要使用GET从简单的http python服务器返回zip文件,您需要执行以下操作:

  1. 将标题设置为“application / zip”

    self.send_header("Content-type:", "application/zip")

  2. 使用zipfile模块创建zip文件

  3. 使用文件路径(例如:c:/temp/zipfile.zip)使用'rb'方法打开文件以读取二进制信息

    openObj = open( < path > , 'rb')

  4. 将对象返回浏览器

    openObj.close() del openObj self.wfile.write(openObj.read())

    就是这样。谢谢大家的帮助。