【问题标题】:Python Flask get zip file from POSTPython Flask 从 POST 获取 zip 文件
【发布时间】:2021-07-28 23:45:26
【问题描述】:

我有一个从邮递员或 curl 调用的烧瓶 Web 服务,该调用不是来自表单,这是一个直接调用,带有作为参数传递的 zip。 我已经尝试过这样的 get_data()

file = request.get_data()
with zipfile.ZipFile(r'/my/path/myzip.zip', 'w') as f:
    f.write(file)

zip 已创建但为空,如果我返回 return file 之类的文件值,我会得到位数据,所以数据在这里..

如果我尝试使用request.files,我需要从表单传递一个文件存储,所以现在,我不知道我能做什么!

我在谷歌上找到的所有内容都是基于表单请求。谢谢。

【问题讨论】:

  • 好的,但是如果我从 POST 获得一个 Zip 文件.. 我如何将 zip 保存在一个目录中?我可以用表单来做到这一点,但只有一个 POST .. 我知道 POST 正在工作,因为当我从请求中使用 print(file) 时,我看到了二进制值

标签: python python-3.x flask flask-restful


【解决方案1】:

使用您提供的小代码,我假设get_data() 返回一个包含您的数据的字符串。您遇到的问题是 write() 用于使用其路径而不是原始数据将文件写入 zip。尝试改用writestr()。以下是相关文档:https://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.writestr

【讨论】:

  • 谢谢,其实POST来自oracle,内容是blob格式。当我print(file, file=sys.stdout)我看到字节或二进制或blob格式的内容时,blob是一个zip文件。
  • 它也适用于字节。如果可行,请考虑接受答案!
  • 谢谢,但它不起作用!我再次收到错误 500,同样的错误:内容为空
  • 你是如何使用这个方法的?它应该看起来像:f.writestr('filename_in_the_archive', data)
  • 是的,我已经尝试过医生所说的!它说的是内容是空的。 zip 是通过 oracle 生成的,也许这就是问题所在,我们正在寻找!
猜你喜欢
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
相关资源
最近更新 更多