Add content-type header to ftp URLs (SF patch #454553)

Modify rfc822.formatdate() to always generate English names,
regardless of locale.  This is required by RFC 1123.

In open_local_file() of urllib and urllib2, use new formatdate() from
rfc822.
This commit is contained in:
Jeremy Hylton 2001-08-27 20:16:53 +00:00
parent 53da317801
commit 6d8c1aabff
3 changed files with 27 additions and 14 deletions

View file

@ -96,9 +96,12 @@ import urlparse
import md5
import mimetypes
import mimetools
import rfc822
import ftplib
import sys
import time
import os
import stat
import gopherlib
import posixpath
@ -914,16 +917,22 @@ class FileHandler(BaseHandler):
# not entirely sure what the rules are here
def open_local_file(self, req):
mtype = mimetypes.guess_type(req.get_selector())[0]
headers = mimetools.Message(StringIO('Content-Type: %s\n' \
% (mtype or 'text/plain')))
host = req.get_host()
file = req.get_selector()
localfile = url2pathname(file)
stats = os.stat(localfile)
size = stats[stat.ST_SIZE]
modified = rfc822.formatdate(stats[stat.ST_MTIME])
mtype = mimetypes.guess_type(file)[0]
stats = os.stat(localfile)
headers = mimetools.Message(StringIO(
'Content-Type: %s\nContent-Length: %d\nLast-modified: %s\n' %
(mtype or 'text/plain', size, modified)))
if host:
host, port = splitport(host)
if not host or \
(not port and socket.gethostbyname(host) in self.get_names()):
return addinfourl(open(url2pathname(file), 'rb'),
return addinfourl(open(localfile, 'rb'),
headers, 'file:'+file)
raise URLError('file not on local host')