o a@sdZddlZddlmZddlmZddlmZddl m Z ddl m Z dZ Gd d d e ZGd d d eZGd ddeZGdddeZdS)z& Classes representing uploaded files. N)BytesIO)settings)temp)File)validate_file_name) UploadedFileTemporaryUploadedFileInMemoryUploadedFileSimpleUploadedFilecsDeZdZdZd fdd ZddZddZd d ZeeeZ Z S) ra An abstract uploaded file (``TemporaryUploadedFile`` and ``InMemoryUploadedFile`` are the built-in concrete subclasses). An ``UploadedFile`` object behaves somewhat like a file object and represents some file data that the user submitted with a form. Ncs*t||||_||_||_||_dSN)super__init__size content_typecharsetcontent_type_extra)selffilenamerrrr __class__@/usr/lib/python3/dist-packages/django/core/files/uploadedfile.pyr s  zUploadedFile.__init__cCsd|jj|j|jfS)Nz <%s: %s (%s)>)r__name__rrrrrr__repr__!szUploadedFile.__repr__cCs|jSr )_namerrrr _get_name$szUploadedFile._get_namecCsf|dur.tj|}t|dkr*tj|\}}|dd}|ddt||}t|}||_dS)N)ospathbasenamelensplitextrr)rrextrrr _set_name's    zUploadedFile._set_name)NNNNNN) r __module__ __qualname____doc__r rrr%propertyr __classcell__rrrrrsrcs2eZdZdZd fdd ZddZddZZS) rzH A file uploaded to a temporary location (i.e. stream-to-disk). Nc s>tj|\}}tjd|tjd}t||||||dS)Nz.upload)suffixdir) rr r#tempfileNamedTemporaryFilerFILE_UPLOAD_TEMP_DIRr r ) rrrrrr_r$rrrrr >szTemporaryUploadedFile.__init__cCs|jjS)z"Return the full path of this file.)rrrrrrtemporary_file_pathCsz)TemporaryUploadedFile.temporary_file_pathcCs"z|jWStyYdSwr )rcloseFileNotFoundErrorrrrrr2Gs   zTemporaryUploadedFile.closer )rr&r'r(r r1r2r*rrrrr:s rcs@eZdZdZd fdd Zd ddZd ddZd d d ZZS) r z> A file uploaded into memory (i.e. stream-to-memory). Ncs t||||||||_dSr )r r field_name)rrr4rrrrrrrrr Us zInMemoryUploadedFile.__init__cCs|jd|SNr)rseek)rmoderrropenYs zInMemoryUploadedFile.openccs|jd|VdSr5)rr6readr chunk_sizerrrchunks]s zInMemoryUploadedFile.chunkscCsdS)NFrr:rrrmultiple_chunksasz$InMemoryUploadedFile.multiple_chunksr ) rr&r'r(r r8r<r=r*rrrrr Qs   r cs.eZdZdZdfdd ZeddZZS)r zV A simple representation of a file, which just has content, size, and a name. text/plainc s,|pd}tt|d||t|dddS)N)r r rr")rrcontentrrrrr js$zSimpleUploadedFile.__init__cCs||d|d|ddS)z Create a SimpleUploadedFile object from a dictionary with keys: - filename - content-type - content filenamer@z content-typer>)get)cls file_dictrrr from_dictns zSimpleUploadedFile.from_dict)r>)rr&r'r(r classmethodrEr*rrrrr fs r )r(rior django.confrdjango.core.filesrr-django.core.files.baserdjango.core.files.utilsr__all__rrr r rrrrs     )