打开图像会将其加载到内存中,这就是导致大量使用情况下负载增加的原因。正如Martin所说,真正的解决方案是直接提供文件。
这是另一种方法,它将以分块方式流式传输文件而不将其加载到内存中。
import osimport mimetypesfrom django.http import StreamingHttpResponsefrom django.core.servers.basehttp import FileWrapperdef download_file(request): the_file = '/some/file/name.png' filename = os.path.basename(the_file) chunk_size = 8192 response = StreamingHttpResponse(FileWrapper(open(the_file, 'rb'), chunk_size), content_type=mimetypes.guess_type(the_file)[0]) response['Content-Length'] = os.path.getsize(the_file) response['Content-Disposition'] = "attachment; filename=%s" % filename return response



