diff options
author | Guido van Rossum <guido@python.org> | 2001-08-09 17:43:35 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-08-09 17:43:35 (GMT) |
commit | f0713d3f4d1d9fbd3cc10877822e824103f7affa (patch) | |
tree | fba4b6386211e9ecd2c8a6a0de07f34a1446dee1 /Lib/urllib.py | |
parent | c8718c13e86aff14fbb65d32ab91908c445c98c6 (diff) | |
download | cpython-f0713d3f4d1d9fbd3cc10877822e824103f7affa.zip cpython-f0713d3f4d1d9fbd3cc10877822e824103f7affa.tar.gz cpython-f0713d3f4d1d9fbd3cc10877822e824103f7affa.tar.bz2 |
SF Patch #420725 by Walter Doerwald:
For local files urllib.py doesn't return the MIME
headers that the documentation says it does:
http://www.python.org/doc/current/lib/module-
urllib.html#l2h-2187 states that "When the method is
local-file, returned headers will include a Date
representing the file's last-modified time, a Content-
Length giving file size, and a Content-Type containing
a guess at the file's type"
But in Python 2.1 the only header that gets returned
is the Content-Type:
>>> import urllib
>>> f = urllib.urlopen("gurk.txt")
>>> f.info().headers
['Content-Type: text/plain\n']
Diffstat (limited to 'Lib/urllib.py')
-rw-r--r-- | Lib/urllib.py | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/Lib/urllib.py b/Lib/urllib.py index 084d32a..9c1f5b7 100644 --- a/Lib/urllib.py +++ b/Lib/urllib.py @@ -25,6 +25,8 @@ used to query various info about the object, if available. import string import socket import os +import stat +import time import sys import types @@ -402,15 +404,26 @@ class URLopener: def open_local_file(self, url): """Use local file.""" import mimetypes, mimetools, StringIO + host, file = splithost(url) + localname = url2pathname(file) + stats = os.stat(localname) + size = stats[stat.ST_SIZE] + modified = time.gmtime(stats[stat.ST_MTIME]) + modified = "%s, %02d %s %04d %02d:%02d:%02d GMT" % ( + ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"][modified[6]], + modified[2], + ["Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][modified[1]-1], + modified[0], modified[3], modified[4], modified[5]) mtype = mimetypes.guess_type(url)[0] headers = mimetools.Message(StringIO.StringIO( - 'Content-Type: %s\n' % (mtype or 'text/plain'))) - host, file = splithost(url) + 'Content-Type: %s\nContent-Length: %d\nLast-modified: %s\n' % + (mtype or 'text/plain', size, modified))) if not host: urlfile = file if file[:1] == '/': urlfile = 'file://' + file - return addinfourl(open(url2pathname(file), 'rb'), + return addinfourl(open(localname, 'rb'), headers, urlfile) host, port = splitport(host) if not port \ @@ -418,7 +431,7 @@ class URLopener: urlfile = file if file[:1] == '/': urlfile = 'file://' + file - return addinfourl(open(url2pathname(file), 'rb'), + return addinfourl(open(localname, 'rb'), headers, urlfile) raise IOError, ('local file error', 'not on local host') |