]> granicus.if.org Git - python/commitdiff
SF patch #454553 by Walter Dörwald: auto-guess content-type header for
authorGuido van Rossum <guido@python.org>
Thu, 23 Aug 2001 13:38:15 +0000 (13:38 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 23 Aug 2001 13:38:15 +0000 (13:38 +0000)
ftp urls.

Doc/lib/liburllib.tex
Lib/urllib.py

index 6522cf7b8764292591db2ffa7046de26fdd25075..fb9524acecf9774983fb62ef0a76bd66f20188e4 100644 (file)
@@ -43,7 +43,8 @@ returned by the server at the head of the retrieved HTML page
 (including Content-Length and Content-Type).  When the method is FTP,
 a Content-Length header will be present if (as is now usual) the
 server passed back a file length in response to the FTP retrieval
-request.  When the method is local-file, returned headers will include
+request. A Content-Type header will be present if the MIME type can
+be guessed.  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. See also the description of the
index f60a84154af47566301eb5b07512b3c2a3009d66..a255956efd2914dbeb67bde87365146969515d2c 100644 (file)
@@ -440,6 +440,7 @@ class URLopener:
 
     def open_ftp(self, url):
         """Use FTP protocol."""
+        import mimetypes, mimetools, StringIO
         host, path = splithost(url)
         if not host: raise IOError, ('ftp error', 'no host given')
         host, port = splitport(host)
@@ -482,12 +483,13 @@ class URLopener:
                    value in ('a', 'A', 'i', 'I', 'd', 'D'):
                     type = value.upper()
             (fp, retrlen) = self.ftpcache[key].retrfile(file, type)
+            mtype = mimetypes.guess_type("ftp:" + url)[0]
+            headers = ""
+            if mtype:
+                headers += "Content-Type: %s\n" % mtype
             if retrlen is not None and retrlen >= 0:
-                import mimetools, StringIO
-                headers = mimetools.Message(StringIO.StringIO(
-                    'Content-Length: %d\n' % retrlen))
-            else:
-                headers = noheaders()
+                headers += "Content-Length: %d\n" % retrlen
+            headers = mimetools.Message(StringIO.StringIO(headers))
             return addinfourl(fp, headers, "ftp:" + url)
         except ftperrors(), msg:
             raise IOError, ('ftp error', msg), sys.exc_info()[2]