From e414b0b3ea3f4323beb4620916b32aa1718456f6 Mon Sep 17 00:00:00 2001 From: "willmcgugan@gmail.com" Date: Sat, 10 Aug 2013 12:25:53 +0000 Subject: Fixes an issue serving binary files git-svn-id: http://pyfilesystem.googlecode.com/svn/trunk@862 67cdc799-7952-0410-af00-57a81ceafa0f --- fs/expose/http.py | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'fs') diff --git a/fs/expose/http.py b/fs/expose/http.py index fca3348..fb00749 100644 --- a/fs/expose/http.py +++ b/fs/expose/http.py @@ -17,15 +17,15 @@ def _datetime_to_epoch(d): return mktime(d.timetuple()) class FSHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): - + """A hacked together version of SimpleHTTPRequestHandler""" - + def __init__(self, fs, request, client_address, server): self._fs = fs SimpleHTTPServer.SimpleHTTPRequestHandler.__init__(self, request, client_address, server) - + def do_GET(self): - """Serve a GET request.""" + """Serve a GET request.""" f = None try: f = self.send_head() @@ -33,10 +33,10 @@ class FSHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): try: self.copyfile(f, self.wfile) except socket.error: - pass + pass finally: if f is not None: - f.close() + f.close() def send_head(self): """Common code for GET and HEAD commands. @@ -65,15 +65,15 @@ class FSHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): break else: return self.list_directory(path) - ctype = self.guess_type(path) + ctype = self.guess_type(path) try: info = self._fs.getinfo(path) - f = self._fs.open(path, 'r') + f = self._fs.open(path, 'rb') except FSError, e: self.send_error(404, str(e)) return None - self.send_response(200) - self.send_header("Content-type", ctype) + self.send_response(200) + self.send_header("Content-type", ctype) self.send_header("Content-Length", str(info['size'])) if 'modified_time' in info: self.send_header("Last-Modified", self.date_time_string(_datetime_to_epoch(info['modified_time']))) @@ -103,11 +103,11 @@ class FSHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): f.write("\nDirectory listing for %s\n" % displaypath) f.write("\n

Directory listing for %s

\n" % displaypath) f.write("
\n