zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    系列文章--突袭HTML5之Javascript
    arguments对象的实例使用
    Javascript常用的设计模式详解
    javascript日历插件
    系列文章--AJAX技术系列总结
    零基础汇编学习笔记
    VC++6.0注释快捷键的添加使用
    VC6++常用快捷键
    汇编题目:编写包含多个功能子程序的中断例程
    汇编题目:按A键,当松开的时显示字母A
  • 原文地址:https://www.cnblogs.com/cmsd/p/4063750.html
Copyright © 2011-2022 走看看