Server : Apache System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64 User : dh_edsupp ( 6597262) PHP Version : 8.2.26 Disable Function : NONE Directory : /lib/python3/dist-packages/django/http/__pycache__/ |
Upload File : |
o ��Ihrm � @ s< d Z ddlZddlZddlZddlZddlZddlmZ ddlm Z ddl mZmZm Z mZ ddlmZmZmZ ddlmZ ddlmZ d ZG d d� de�ZG dd � d e�ZdZdZdZeeeg�ZG dd� d�Z G dd� d�Z!G dd� d�Z"G dd� d�Z#G dd� d�Z$dd� Z%dd� Z&G dd � d �Z'd!d"� Z(d#d$� Z)dS )%z� Multi-part parsing for file uploads. Exposes one class, ``MultiPartParser``, which feeds chunks of uploaded data to file upload handlers for processing. � N)�unquote)�settings)�RequestDataTooBig�SuspiciousMultipartForm�TooManyFieldsSent�TooManyFilesSent)�SkipFile�StopFutureHandlers� StopUpload)�MultiValueDict)� force_str)�MultiPartParser�MultiPartParserError�InputStreamExhaustedc @ s e Zd ZdS )r N)�__name__� __module__�__qualname__� r r �=/usr/lib/python3/dist-packages/django/http/multipartparser.pyr s r c @ s e Zd ZdZdS )r z5 No more reads are allowed from this device. N)r r r �__doc__r r r r r s r �raw�file�fieldc @ sF e Zd ZdZddd�Zdd� Zdd� Zd d � Zdd� ZeZ d d� Z dS )r z� A rfc2388 multipart/form-data parser. ``MultiValueDict.parse()`` reads the input stream in ``chunk_size`` chunks and returns a tuple of ``(MultiValueDict(POST), MultiValueDict(FILES))``. Nc C s$ |� dd�}|�d�std| ��zt|�d��\}}W n ty+ tdt|� ��w |� d�}|r8t�|�s@tdt|� ��z t |� d d ��} W n t tfyW d } Y nw | d k rbtd| ��t|t �rl|�d�}|| _|| _dd � |D �} tdg| �| _|| _|p�tj| _| | _|| _dS )a� Initialize the MultiPartParser object. :META: The standard ``META`` dictionary in Django request objects. :input_data: The raw post data, as a file-like object. :upload_handlers: A list of UploadHandler instances that perform operations on the uploaded data. :encoding: The encoding with which to treat the incoming data. �CONTENT_TYPE� z multipart/zInvalid Content-Type: %s�asciiz/Invalid non-ASCII Content-Type in multipart: %s�boundaryz!Invalid boundary in multipart: %s�CONTENT_LENGTHr zInvalid content length: %rc S s g | ]}|j r|j �qS r )� chunk_size)�.0�xr r r � <listcomp>b s z,MultiPartParser.__init__.<locals>.<listcomp>i���N)�get� startswithr �parse_header�encode�UnicodeEncodeErrorr �cgi�valid_boundary�int� ValueError� TypeError� isinstance�str� _boundary�_input_data�min�_chunk_size�_metar �DEFAULT_CHARSET� _encoding�_content_length�_upload_handlers)�self�META� input_data�upload_handlers�encoding�content_type�ctypes�optsr �content_length�possible_sizesr r r �__init__4 s8 � � zMultiPartParser.__init__c C sL z| � � W S ty% t| d�r$| j�� D ] \}}|D ]}|�� qq� w )N�_files)�_parse� Exception�hasattrrB �lists�close)r7 �_�files�fileobjr r r �parsej s ��zMultiPartParser.parsec # C s ddl m} | j}| j}| jdkr|| jd�t� fS |D ]}|�| j| j| j| j |�}|dur9|d |d f S q|dd�| _ t� | _tt | j| j��}d}dgt|� }d} d} d}d}d} �z�t|| j �D �]�\}}}|rz| �||� d}d} |tv r�tjdur�| d7 } tjd | k r�td ��z|d d }|d �� }W n tttfy� Y qhw |�d�}|dur�|d �� }t||d d�}|tk�r'tjdur�tj| }|dkr�|j|d�}| t|�7 } zt� |�}W n t!j"y� |}Y n w |j|d�}| t|�7 } | t|�d 7 } tjdu�r| tjk�rt#d��| j �$|t||d d�� qh|t%k�r?|d7 }tj&du�r@|tj&k�r@t'd��|�d�}|�rTt||d d�}| �(|�}|�sXqh|�ddi f�\}}|�� }|�d�}zt)|�d�d �}W n tt*t+f�y� d}Y nw dgt|� }d} z�|D ]}z |�,||||||� W �q� t-�y� Y nw |D ]x}|dk�rd�.|�/� �}t|�d }|dk�r�|�d| �}|�s�n|d�.|�/� �7 }t|�d }|dk�s�zt� |�}W n t0�y } zt1d�|�d}~ww t2|�D ] \} }t|�}!|�3||| �}|| |!7 <