leafsummer
7/27/2016 - 3:04 AM

django for downloading file

django for downloading file

import os, tempfile, zipfile  
from django.http import HttpResponse  
from django.core.servers.basehttp import FileWrapper  
def send_zipfile(request):  
    """                                                                          
    Create a ZIP file on disk and transmit it in chunks of 8KB,                  
    without loading the whole file into memory. A similar approach can           
    be used for large dynamic PDF files.                                         
    """  
    temp = tempfile.TemporaryFile()  
    archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_DEFLATED)  
    for index in range(10):  
        filename = __file__ # Select your files here.                             
        archive.write(filename, 'file%d.txt' % index)  
    archive.close()  
    wrapper = FileWrapper(temp)  
    response = HttpResponse(wrapper, content_type='application/zip')  
    response['Content-Disposition'] = 'attachment; filename=test.zip'  
    response['Content-Length'] = temp.tell()  
    temp.seek(0)  
    return response