@@ -358,13 +358,20 @@ class File:
358358 config: The configuration for this File. See above for valid configuration keys and their corresponding values.
359359 """ # noqa: E501
360360
361- def __init__ (self , file_name : bytes | None , field_name : bytes | None = None , config : FileConfig = {}) -> None :
361+ def __init__ (
362+ self ,
363+ file_name : bytes | None ,
364+ field_name : bytes | None = None ,
365+ config : FileConfig = {},
366+ content_type : bytes | None = None ,
367+ ) -> None :
362368 # Save configuration, set other variables default.
363369 self .logger = logging .getLogger (__name__ )
364370 self ._config = config
365371 self ._in_memory = True
366372 self ._bytes_written = 0
367373 self ._fileobj : BytesIO | BufferedRandom = BytesIO ()
374+ self ._content_type = content_type
368375
369376 # Save the provided field/file name.
370377 self ._field_name = field_name
@@ -392,6 +399,11 @@ def file_name(self) -> bytes | None:
392399 """The file name given in the upload request."""
393400 return self ._file_name
394401
402+ @property
403+ def content_type (self ) -> bytes | None :
404+ """The Content-Type given in the upload request."""
405+ return self ._content_type
406+
395407 @property
396408 def actual_file_name (self ) -> bytes | None :
397409 """The file name that this file is saved as. Will be None if it's not
@@ -570,7 +582,9 @@ def close(self) -> None:
570582 self ._fileobj .close ()
571583
572584 def __repr__ (self ) -> str :
573- return "{}(file_name={!r}, field_name={!r})" .format (self .__class__ .__name__ , self .file_name , self .field_name )
585+ return "{}(file_name={!r}, field_name={!r}, content_type={!r})" .format (
586+ self .__class__ .__name__ , self .file_name , self .field_name , self .content_type
587+ )
574588
575589
576590class BaseParser :
@@ -1695,7 +1709,12 @@ def on_headers_finished() -> None:
16951709 if file_name is None :
16961710 f_multi = FieldClass (field_name )
16971711 else :
1698- f_multi = FileClass (file_name , field_name , config = cast ("FileConfig" , self .config ))
1712+ f_multi = FileClass (
1713+ file_name ,
1714+ field_name ,
1715+ config = cast ("FileConfig" , self .config ),
1716+ content_type = headers .get (b"Content-Type" , None ),
1717+ )
16991718 is_file = True
17001719
17011720 # Parse the given Content-Transfer-Encoding to determine what
0 commit comments