• 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, 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
  • 相关阅读:
    pionter指针小结
    C++笔记 5
    C++笔记 3
    ipad safari 滚动(overflow)解决方案
    IE9 BUG overflow :auto 底部空白解决方案
    asp.net 导出EXCEL超高兼容(不用装Excel)
    jquery post 同步异步总结
    jquery-alert对话框
    左固定右边自适应框架
    删除Cookies
  • 原文地址:https://www.cnblogs.com/cmsd/p/4063750.html
Copyright © 2020-2023  润新知