mirror of
https://github.com/django/django.git
synced 2025-07-03 17:29:12 +00:00
[soc2009/http-wsgi-improvements] Remove setting the Content-Length header for HttpResponseSendFile from the handler, for compatibility, and add a content attribute. Refs #2131.
Also adds a _charset class attribute to HttpResponse so the children all have it. git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/http-wsgi-improvements@11326 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
be96986ce8
commit
76fdeaf720
@ -251,12 +251,7 @@ class WSGIHandler(base.BaseHandler):
|
||||
filelike = open(filename, 'rb')
|
||||
return environ['wsgi.file_wrapper'](filelike,
|
||||
response.block_size)
|
||||
else:
|
||||
import os.path
|
||||
if not os.path.exists(filename):
|
||||
raise Exception("Filename provided to HttpResponseSendFile does not exist.")
|
||||
response_headers.append(('Content-Length',
|
||||
str(os.path.getsize(filename))))
|
||||
|
||||
start_response(status, response_headers)
|
||||
return response
|
||||
|
||||
|
@ -272,6 +272,7 @@ class HttpResponse(object):
|
||||
|
||||
_status_code = 200
|
||||
_codec = None
|
||||
_charset = None
|
||||
|
||||
def __init__(self, content='', mimetype=None, status=None,
|
||||
content_type=None, request=None):
|
||||
@ -446,6 +447,8 @@ class HttpResponseSendFile(HttpResponse):
|
||||
self.block_size = block_size
|
||||
self['Content-Disposition'] = ('attachment; filename=%s' %
|
||||
os.path.basename(path_to_file))
|
||||
if not settings.HTTPRESPONSE_SENDFILE_HEADER and os.path.exists(path_to_file):
|
||||
self['Content-Length'] = str(os.path.getsize(path_to_file))
|
||||
self._empty_content = False
|
||||
|
||||
def set_empty_content(self):
|
||||
@ -457,6 +460,11 @@ class HttpResponseSendFile(HttpResponse):
|
||||
from django.core.servers.basehttp import FileWrapper
|
||||
return FileWrapper(self.get_file_handler(), self.block_size)
|
||||
|
||||
def _get_content(self):
|
||||
return "".join(self.iter())
|
||||
|
||||
content = property(_get_content)
|
||||
|
||||
def get_file_handler(self):
|
||||
if not self.sendfile_fh:
|
||||
self.sendfile_fh = open(self.sendfile_filename, 'rb')
|
||||
|
Loading…
x
Reference in New Issue
Block a user