首页 > 代码库 > django上传下载大文件

django上传下载大文件

上传

def upFile(file):    upload_dir = /tmp/upload/%s % username    if request.method == POST:        upload_file = request.FILES.get(file, None)        if upload_file:            if not os.path.exists(upload_dir):                os.makedirs(upload_dir)            filename = %s/%s % (upload_dir, upload_file.name)            f = open(filename, wb)            for chunk in upload_file.chunks():                f.write(chunk)            f.close()

 

 

下载

import os, tempfile, zipfilefrom django.http import HttpResponsefrom django.core.servers.basehttp import FileWrapperdef send_file(request):    """                                                                             Send a file through Django without loading the whole file into                  memory at once. The FileWrapper will turn the file object into an               iterator for chunks of 8KB.                                                     """    filename = __file__ # Select your file here.                                    wrapper = FileWrapper(file(filename))    response = HttpResponse(wrapper, content_type=text/plain)    response[Content-Length] = os.path.getsize(filename)    return responsedef 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

 

django上传下载大文件