Chrome загружает zip-файл как «download.zip», firefox загружает его как «IEtEk_sk.zip.part», а Internet Explorer даже не предлагает его сохранить, он пытается открыть исходный контент в другом окно. Почему загрузка не сохраняется как «dbs_custom_library.zip» во всех браузерах или даже вообще не загружается в IE?django не сохраняет имя файла
HTML форма
<form action="/django/builder/buildit/" method="POST">
<input type="checkbox" name="list" value="val1" checked/>
<input type="checkbox" name="list" value="val2" checked/>
<input type="checkbox" name="list" value="thisispersian" checked/>
<input type="submit" value="Submit!" />
</form>
views.py
def zipit (file_paths):
buffer= StringIO.StringIO()
z= zipfile.ZipFile(buffer, "w")
for p in file_paths:
if os.path.isdir(p):
for dir, subdirs, files in os.walk(p):
for f in files:
filename = os.path.join(dir, f)
z.write(filename, arcname = filename[31:])
else:
z.write(p, arcname = p[31:])
z.close()
buffer.seek(0)
return buffer.getvalue()
def persian (mylist):
files = []
if 'val1' in mylist:
files.append('/home/dbs/public_html/download/Persian/Books/val1.html')
if 'val2' in mylist:
files.append('/home/dbs/public_html/download/Persian/Books/val2.html')
return files
def main(request):
if request.method == 'POST':
mylist = request.POST.getlist('list')
if 'thisispersian' in mylist:
files = persian(mylist)
zipped = zipit(files)
zipped['Content-Disposition'] = 'attachment; filename=dbs_custom_library.zip'
return HttpResponse(zipped, mimetype="application/x-zip-compressed")
else:
return http.HttpResponseForbidden()
Документ W3C, описывающий Content-Disposition (RFC 2616), по-видимому, требует двойных кавычек вокруг имени файла. – geoffspear
Я только что изменил строку, о которой вы говорили, в этом 'zipped ['Content-Disposition'] = 'attachment; filename = "dbs_custom_library.zip" ''с тем же результатом – user1459482