SVN: r24460 - trunk/quixote

Neil Schemenauer <nascheme-fVcApmY9cLvQ3/1i3zOLAti2O/[email protected]> Mon, 14 Jun 2004 18:28:45 -0400
Newsgroups gmane.comp.web.quixote.cvs
Message-ID <[email protected]>
Author: nascheme
Date: 2004-06-14 18:28:19 -0400 (Mon, 14 Jun 2004)
New Revision: 24460

Modified:
   trunk/quixote/upload.py
Log:
Adds a 'content_type' attribute to Upload instances, based on the
'Content-Type' header in the MIME part representing the file. If
this header is missing from the request, then 'content_type' will
be set to None.


Modified: trunk/quixote/upload.py
===================================================================
--- trunk/quixote/upload.py	2004-06-14 22:25:53 UTC (rev 24459)
+++ trunk/quixote/upload.py	2004-06-14 22:28:19 UTC (rev 24460)
@@ -120,9 +120,12 @@
         characters neutralized (see make_safe())
       tmp_filename
         where you'll actually find the file on the current system
+      content_type
+        the content type provided by the user-agent in the request
+        that uploaded this file.
     """
 
-    def __init__ (self, orig_filename):
+    def __init__ (self, orig_filename, content_type=None):
         if orig_filename:
             self.orig_filename = orig_filename
             bspos = orig_filename.rfind("\\")
@@ -142,6 +145,7 @@
             self.orig_filename = None
             self.base_filename = None
 
+        self.content_type = content_type
         self.tmp_filename = None
 
     def __str__ (self):
@@ -300,10 +304,10 @@
                                                 self.upload_dir_mode)
             os.mkdir(self.upload_dir, self.upload_dir_mode)
 
-    def handle_upload (self, name, filename, file, boundary):
+    def handle_upload (self, name, filename, file, boundary, content_type):
         if self.upload_dir is None:
             raise ConfigError("upload_dir not set")
-        upload = Upload(filename)
+        upload = Upload(filename, content_type)
         self.check_upload_dir()
         done = upload.receive(file, boundary, self.upload_dir)
         self.add_form_value(name, upload)
@@ -331,7 +335,9 @@
                                    "in body sub-part")
             (name, filename) = self.parse_content_disposition(cdisp)
             if filename:
-                done = self.handle_upload(name, filename, file, boundary)
+                content_type = headers.get('content-type')
+                done = self.handle_upload(name, filename, file,
+                                          boundary, content_type)
             else:
                 done = self.handle_regular_var(name, file, boundary)