当前位置: 首页 > 面试题库 >

创建内存中zip文件并以http响应返回的功能

张瀚漠
2023-03-14
问题内容

我正在避免在磁盘上创建文件,这是到目前为止的结果:

def get_zip(request):
    import zipfile, StringIO
    i = open('picture.jpg', 'rb').read()
    o = StringIO.StringIO()
    zf = zipfile.ZipFile(o, mode='w')
    zf.writestr('picture.jpg', i)
    zf.close()
    o.seek(0)
    response = HttpResponse(o.read())
    o.close()
    response['Content-Type'] = 'application/octet-stream'
    response['Content-Disposition'] = "attachment; filename=\"picture.zip\""
    return response

您认为正确,优雅,Python够吗?还有更好的方法吗?

谢谢!


问题答案:

对于StringIO您通常应该使用o.getvalue()以获得结果。另外,如果要将普通文件添加到zip文件中,可以使用zf.write('picture.jpg')。您不需要手动阅读它。



 类似资料:
  • 我的程序中的主要endpoint处理大量数据,并最终创建Zip文件,其中包含具有几个子目录的父目录和几个文件(在子目录之间拆分)。将zip发送回客户端后,将删除在该过程中创建的所有内容,因为只有创建这些内容的作业才能启动zip文件。主要目标是将zip文件作为响应发送给用户。 就性能而言,有没有一种方法可以在不实际创建文件夹的情况下执行此逻辑

  • 问题内容: 我正在尝试将 文件 从 一个文件夹 保存到 另一个 文件夹 。 zip文件夹 放置在其他目录中。而且我编写了以下代码: archive.php 但是可惜我无法创建.zip文件夹。我错过了任何一步吗? 问题答案: TEST是您的项目文件夹名称。 您可以根据需要定义路径。

  • 我试图在ZIP文件内创建一个ZIP文件,以重新构建以前在内存中的zip结构,我在Java。 我失败了,因为我得到了一个错误的内部ZIP内创建的初始ZIP文件。文件已损坏。当试图打开它时,我得到一个“文件的意外结局”。 我得到了这个结构: -input.zip--InnerInput.zip 代码使用java Stack和Map在内存中解压。然后它创建input2.zip,内部nput.zip。 总

  • 我有一个函数,可以从文件列表中创建一个Zip文件。是否可以在不保存在磁盘上的情况下返回Zip文件?我需要这个文件,因为我必须使用zip文件作为另一个函数的参数。我不确定ByteStream是否适合我。 编辑:添加用例 其想法是创建一个zip文件,并使用Watson的VisualRecognition服务的CreateClassifications方法。 构建器接受zip文件作为参数。 理解 根据A

  • 我想用响应替换http异常,也就是说,我使用我想返回的responseentity,例如409如果没有通过名称找到用户,509如果没有通过邮件找到用户,我可以确定responseentity中的错误号及其描述吗?如果有,可以举例说明吗?

  • 问题内容: XlsxWriter对象另存为http响应以在Django中创建下载? 问题答案: 我想你是在询问如何使用创建内存中的excel文件并通过返回。这是一个例子: 希望能有所帮助。