1

チェックボックスフォームがあります。ユーザーが「ビデオ」ボックスをチェックしてフォームを送信すると、ビデオファイルが圧縮され、djangoが動的ダウンロードを生成してユーザー画面にポップアップ表示するようにしようとしています。オーディオについても同じことが起こりたいです。ただし、ユーザーがチェックボックスと送信の両方を選択すると、オーディオファイルとビデオファイルがzip形式で結合され、ユーザーのダウンロードがポップアップ表示されます。これをディスクに保存したくないので、StringIOを使用しています。ダウンロードポップアップが表示されない

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>

Python

#!/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'
4

1 に答える 1