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
  • 相关阅读:
    五、MapReduce 发布服务
    四、MapReduce 基础
    三、Hadoop 的 API
    二、HDFS 架构
    php身份证号的验证
    php性能优化
    PHP网站开发方案
    php一个不错的分页
    2013年最流行的php框架盘点
    程序员之路
  • 原文地址:https://www.cnblogs.com/cmsd/p/4063750.html
Copyright © 2011-2022 走看看