1
我有一個複選框的形式。我試圖做到這一點,如果用戶檢查「視頻」框並提交表單,然後視頻文件被壓縮和Django生成一個動態下載彈出在用戶屏幕上。我想爲音頻發生同樣的事情。但是,如果用戶選擇了複選框並提交,則音頻和視頻文件將合併爲一個zip文件並彈出一個下載文件給用戶。我不希望這些存儲在磁盤上,所以我使用StringIO。沒有下載彈出來了python django動態壓縮和下載
HTML
<form>
<input type="checkbox" name="list" value="audio"/> Audio<br />
<input type="checkbox" name="list" value="video"/> Video<br />
<input type="submit" value="submit" />
</form>
蟒蛇
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import cgitb; cgitb.enable()
import cgi
from zipfile import ZipFile
from StringIO import StringIO
from django.http import HttpResponse
from django.core.servers.basehttp import FileWrapper
files = 0
def zip (content):
buffer= StringIO.StringIO()
z= zipfile.ZipFile(buffer, "w")
z.writestr(content)
z.close()
# generate the file
response = HttpResponse(FileWrapper(z), content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=z.zip'
return response
form = cgi.FieldStorage()
mylist = form.getlist('list')
print 'Content-Type: text/plain\n'
for item in mylist:
if item == 'video':
files = '../download/video.html'
zip(files)
elif item == 'audio':
files = '../download/audio.html'
zip(files)
elif item == 'audio' and 'video':
files = '../download/audio.html'+'../download/video.html'
zip(files)
else:
print 'nothing selected'
發佈追蹤... –