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

Django-创建一个包含多个文件的邮政编码,并使其可下载

尉迟越
2023-03-14
问题内容

(如果我错过了任何重复的内容,请随时向我指出)

我查看了以下代码段:http :
//djangosnippets.org/snippets/365/

和这个答案:

但是我不知道如何调整它们以适应我的需要:我想压缩多个文件,并希望通过链接(或通过视图动态生成)下载存档。我是Python和Django的新手,所以我不知道该怎么做。

预先感谢!


问题答案:

我已经在Willy链接到的重复问题上发布了此问题,但是由于无法将包含悬赏的问题作为重复问题解决,因此也可以在此处将其复制:

import os
import zipfile
import StringIO

from django.http import HttpResponse


def getfiles(request):
    # Files (local path) to put in the .zip
    # FIXME: Change this (get paths from DB etc)
    filenames = ["/tmp/file1.txt", "/tmp/file2.txt"]

    # Folder name in ZIP archive which contains the above files
    # E.g [thearchive.zip]/somefiles/file2.txt
    # FIXME: Set this to something better
    zip_subdir = "somefiles"
    zip_filename = "%s.zip" % zip_subdir

    # Open StringIO to grab in-memory ZIP contents
    s = StringIO.StringIO()

    # The zip compressor
    zf = zipfile.ZipFile(s, "w")

    for fpath in filenames:
        # Calculate path for file in zip
        fdir, fname = os.path.split(fpath)
        zip_path = os.path.join(zip_subdir, fname)

        # Add file, at correct path
        zf.write(fpath, zip_path)

    # Must close zip for all contents to be written
    zf.close()

    # Grab ZIP file from in-memory, make response with correct MIME-type
    resp = HttpResponse(s.getvalue(), mimetype = "application/x-zip-compressed")
    # ..and correct content-disposition
    resp['Content-Disposition'] = 'attachment; filename=%s' % zip_filename

    return resp


 类似资料:
  • 问题内容: 我想创建一个包含其他JAR库的可执行JAR文件。但是当我执行JAR时,它给出了类路径问题的错误。 我该如何解决类路径问题? 问题答案: 我想您可以这样尝试; 这是一个简单的示例供您提问。首先,假设我们有一个项目目录,例如。然后,在此工作目录中创建一个主类 HelloWorld.java ,其中包含其他JAR文件,例如。现在,我们必须将主类HelloWorld和commons-lang.

  • 我试图通过在本地服务器上创建zip文件来下载a 2文件。文件是以zip格式下载的,但当我试图解压缩它时。它给出了一个错误:找不到中央目录签名的结尾。要么该文件不是zip文件,要么它构成了多部分存档的一个磁盘。在后一种情况下,中心目录和zip文件注释将在该存档的最后一个磁盘上找到。 下面的代码我使用这个: 我检查了传递到函数中的所有变量的值,都很好。所以请看这个。提前谢谢。

  • 问题内容: 我正在尝试打开文件并创建一个列表,其中每行都从文件中读取。 但是由于这样说,这个示例代码给了我一个错误。我这是什么问题 我如何编写代码以增加InFile中每个新行的列表数? 问题答案: 比这容易得多: 这将返回文件中每一行的列表。

  • 问题内容: 我是现代JS开发的新手,因此我需要有关此情况的帮助或建议。 情况: 我们有一个支持IE8(React 0.14)的React-Typescript-Redux项目。现在我们要升级到IE11和React 16,但应该支持IE8。 要求: 通过为每个构建使用不同的软件包和/或配置文件,减少浏览器版本之间的项目维护。 问题: 根据我到目前为止所做的研究,似乎无法通过选定的工具(npm,Web

  • 记事本++能够毫无问题地打开文件。我做错了什么? 更新:在JD的回答后,我尝试了以下内容: 仍然没有运气--现在我也可以在Excel中看到BOM(作为grabage)--我也尝试使用unicodecsv和其他一些选项,但再次没有成功:(

  • 我正在尝试制作一个.jar文件(这是我第一次),我很困惑。我了解如何使用命令提示符创建一个简单的jar文件,但对于我的程序,我导入了JavaMail API和我创建的另一个库(名为ArrayLibrary,其中填充了排序方法)。我如何在一个jar文件中创建这些?