码迷,mamicode.com
首页 > Web开发 > 详细

django上传下载大文件

时间:2014-10-30 22:22:32      阅读:645      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   os   ar   for   sp   

上传

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, zipfile
from django.http import HttpResponse
from django.core.servers.basehttp import FileWrapper


def 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 response


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

 

django上传下载大文件

标签:style   blog   http   io   color   os   ar   for   sp   

原文地址:http://www.cnblogs.com/cmsd/p/4063750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!