サーバー上のファイルを圧縮し、クエリがサーバーに送信されたときに zip ファイルを送信する Django スクリプトがあります。ただし、zip ファイルは、data.ZIP ではなく「download」という名前でダウンロードを続けます。data.ZIP は、名前を指定するものです。理由はありますか?私のコードは以下です。前もって感謝します!一部の画像と html をインポートするコードの一部は、それらが問題の一部であるとは思わないため省略しましたが、必要に応じて提供できます。
from django.http import HttpResponse
from django.core.servers.basehttp import FileWrapper
import urlparse
from urllib2 import urlopen
from urllib import urlretrieve
import os
import sys
import zipfile
import tempfile
import StringIO
def index(req):
temp = tempfile.TemporaryFile()
archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_DEFLATED)
# Open StringIO to grab in-memory ZIP contents
s = StringIO.StringIO()
fileList = os.listdir('/tmp/images')
fileList = ['/tmp/images/'+filename for filename in fileList]
# The zip compressor
zip = zipfile.ZipFile(s, "w")
for file in fileList:
archive.write(file, os.path.basename(file))
zip.close()
archive.close()
wrapper = FileWrapper(temp)
#Get zip file, set as attachment, get file size, set mime type
resp = HttpResponse(wrapper, mimetype = "application/octet-stream")
resp['Content-Disposition'] = 'attachment; filename="data.ZIP"'
resp['Content-Length'] = temp.tell()
temp.seek(0)
return resp
temp.seek(0) を追加して先頭に移動したときに表示される Web ページを表示するために画像が追加されました。