{"title":"Uploaded Files and Upload Handlers","version":"2.1","locale":"pl","docname":"ref/files/uploads","url":"/pl/2.1/ref/files/uploads/","canonical":"https://djangodocs.dev/pl/2.1/ref/files/uploads/","summary":"Uploaded files Link to this heading # class UploadedFile Link to this definition # During file uploads, the actual file data is stored in request.FILES . Each entry…","html":"<span id=\"uploaded-files-and-upload-handlers\"></span><h1>Uploaded Files and Upload Handlers<a class=\"heading-anchor\" href=\"#module-django.core.files.uploadedfile\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"uploaded-files\">\n<h2>Uploaded files<a class=\"heading-anchor\" href=\"#uploaded-files\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.UploadedFile\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">UploadedFile</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.UploadedFile\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>During file uploads, the actual file data is stored in <a class=\"reference internal\" href=\"/pl/2.1/ref/request-response/#django.http.HttpRequest.FILES\" title=\"django.http.HttpRequest.FILES\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">request.FILES</span></code></a>. Each entry in this dictionary is an\n<code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code> object (or a subclass) – a simple wrapper around an uploaded\nfile. You’ll usually use one of these methods to access the uploaded content:</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.UploadedFile.read\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">UploadedFile.</span></span><span class=\"sig-name descname\"><span class=\"pre\">read</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.UploadedFile.read\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Read the entire uploaded data from the file. Be careful with this method:\nif the uploaded file is huge it can overwhelm your system if you try to\nread it into memory. You’ll probably want to use <code class=\"docutils literal notranslate\"><span class=\"pre\">chunks()</span></code> instead; see\nbelow.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.UploadedFile.multiple_chunks\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">UploadedFile.</span></span><span class=\"sig-name descname\"><span class=\"pre\">multiple_chunks</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">chunk_size</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.UploadedFile.multiple_chunks\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> if the uploaded file is big enough to require reading in\nmultiple chunks. By default this will be any file larger than 2.5 megabytes,\nbut that’s configurable; see below.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.UploadedFile.chunks\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">UploadedFile.</span></span><span class=\"sig-name descname\"><span class=\"pre\">chunks</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">chunk_size</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.UploadedFile.chunks\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A generator returning chunks of the file. If <code class=\"docutils literal notranslate\"><span class=\"pre\">multiple_chunks()</span></code> is\n<code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, you should use this method in a loop instead of <code class=\"docutils literal notranslate\"><span class=\"pre\">read()</span></code>.</p>\n<p>In practice, it’s often easiest simply to use <code class=\"docutils literal notranslate\"><span class=\"pre\">chunks()</span></code> all the time.\nLooping over <code class=\"docutils literal notranslate\"><span class=\"pre\">chunks()</span></code> instead of using <code class=\"docutils literal notranslate\"><span class=\"pre\">read()</span></code> ensures that large\nfiles don’t overwhelm your system’s memory.</p>\n</dd></dl>\n\n<p>Here are some useful attributes of <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code>:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.UploadedFile.name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">UploadedFile.</span></span><span class=\"sig-name descname\"><span class=\"pre\">name</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.UploadedFile.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The name of the uploaded file (e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">my_file.txt</span></code>).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.UploadedFile.size\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">UploadedFile.</span></span><span class=\"sig-name descname\"><span class=\"pre\">size</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.UploadedFile.size\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The size, in bytes, of the uploaded file.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.UploadedFile.content_type\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">UploadedFile.</span></span><span class=\"sig-name descname\"><span class=\"pre\">content_type</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.UploadedFile.content_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The content-type header uploaded with the file (e.g. <em class=\"mimetype\">text/plain</em>\nor <em class=\"mimetype\">application/pdf</em>). Like any data supplied by the user, you\nshouldn’t trust that the uploaded file is actually this type. You’ll still\nneed to validate that the file contains the content that the content-type\nheader claims – „trust but verify.”</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.UploadedFile.content_type_extra\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">UploadedFile.</span></span><span class=\"sig-name descname\"><span class=\"pre\">content_type_extra</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.UploadedFile.content_type_extra\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A dictionary containing extra parameters passed to the <code class=\"docutils literal notranslate\"><span class=\"pre\">content-type</span></code>\nheader. This is typically provided by services, such as Google App Engine,\nthat intercept and handle file uploads on your behalf. As a result your\nhandler may not receive the uploaded file content, but instead a URL or\nother pointer to the file. (see <a class=\"reference external\" href=\"https://www.ietf.org/rfc/rfc2388.txt\">RFC 2388</a> section 5.3).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.UploadedFile.charset\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">UploadedFile.</span></span><span class=\"sig-name descname\"><span class=\"pre\">charset</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.UploadedFile.charset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>For <em class=\"mimetype\">text/*</em> content-types, the character set (i.e. <code class=\"docutils literal notranslate\"><span class=\"pre\">utf8</span></code>)\nsupplied by the browser. Again, „trust but verify” is the best policy here.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Informacja</p>\n<p>Like regular Python files, you can read the file line-by-line simply by\niterating over the uploaded file:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"k\">for</span> <span class=\"n\">line</span> <span class=\"ow\">in</span> <span class=\"n\">uploadedfile</span><span class=\"p\">:</span>\n    <span class=\"n\">do_something_with</span><span class=\"p\">(</span><span class=\"n\">line</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Lines are split using <a class=\"reference external\" href=\"https://www.python.org/dev/peps/pep-0278\">universal newlines</a>. The following are recognized\nas ending a line: the Unix end-of-line convention <code class=\"docutils literal notranslate\"><span class=\"pre\">'\\n'</span></code>, the Windows\nconvention <code class=\"docutils literal notranslate\"><span class=\"pre\">'\\r\\n'</span></code>, and the old Macintosh convention <code class=\"docutils literal notranslate\"><span class=\"pre\">'\\r'</span></code>.</p>\n</aside>\n<p>Subclasses of <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code> include:</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.TemporaryUploadedFile\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TemporaryUploadedFile</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.TemporaryUploadedFile\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A file uploaded to a temporary location (i.e. stream-to-disk). This class\nis used by the\n<a class=\"reference internal\" href=\"#django.core.files.uploadhandler.TemporaryFileUploadHandler\" title=\"django.core.files.uploadhandler.TemporaryFileUploadHandler\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemporaryFileUploadHandler</span></code></a>. In\naddition to the methods from <a class=\"reference internal\" href=\"#django.core.files.uploadedfile.UploadedFile\" title=\"django.core.files.uploadedfile.UploadedFile\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code></a>, it has one additional\nmethod:</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.TemporaryUploadedFile.temporary_file_path\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">TemporaryUploadedFile.</span></span><span class=\"sig-name descname\"><span class=\"pre\">temporary_file_path</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.TemporaryUploadedFile.temporary_file_path\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the full path to the temporary uploaded file.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadedfile.InMemoryUploadedFile\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">InMemoryUploadedFile</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadedfile.InMemoryUploadedFile\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A file uploaded into memory (i.e. stream-to-memory). This class is used\nby the <a class=\"reference internal\" href=\"#django.core.files.uploadhandler.MemoryFileUploadHandler\" title=\"django.core.files.uploadhandler.MemoryFileUploadHandler\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MemoryFileUploadHandler</span></code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.core.files.uploadhandler\">\n<span id=\"built-in-upload-handlers\"></span><h2>Built-in upload handlers<a class=\"heading-anchor\" href=\"#module-django.core.files.uploadhandler\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Together the <a class=\"reference internal\" href=\"#django.core.files.uploadhandler.MemoryFileUploadHandler\" title=\"django.core.files.uploadhandler.MemoryFileUploadHandler\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MemoryFileUploadHandler</span></code></a> and\n<a class=\"reference internal\" href=\"#django.core.files.uploadhandler.TemporaryFileUploadHandler\" title=\"django.core.files.uploadhandler.TemporaryFileUploadHandler\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemporaryFileUploadHandler</span></code></a> provide Django’s default file upload\nbehavior of reading small files into memory and large ones onto disk. They\nare located in <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.files.uploadhandler</span></code>.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadhandler.MemoryFileUploadHandler\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">MemoryFileUploadHandler</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadhandler.MemoryFileUploadHandler\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>File upload handler to stream uploads into memory (used for small files).</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadhandler.TemporaryFileUploadHandler\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TemporaryFileUploadHandler</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadhandler.TemporaryFileUploadHandler\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Upload handler that streams data into a temporary file using\n<a class=\"reference internal\" href=\"#django.core.files.uploadedfile.TemporaryUploadedFile\" title=\"django.core.files.uploadedfile.TemporaryUploadedFile\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemporaryUploadedFile</span></code></a>.</p>\n</section>\n<section id=\"writing-custom-upload-handlers\">\n<span id=\"custom-upload-handlers\"></span><h2>Writing custom upload handlers<a class=\"heading-anchor\" href=\"#writing-custom-upload-handlers\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadhandler.FileUploadHandler\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">FileUploadHandler</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadhandler.FileUploadHandler\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>All file upload handlers should be subclasses of\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.files.uploadhandler.FileUploadHandler</span></code>. You can define upload\nhandlers wherever you wish.</p>\n<section id=\"required-methods\">\n<h3>Required methods<a class=\"heading-anchor\" href=\"#required-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Custom file upload handlers <strong>must</strong> define the following methods:</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadhandler.FileUploadHandler.receive_data_chunk\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">FileUploadHandler.</span></span><span class=\"sig-name descname\"><span class=\"pre\">receive_data_chunk</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">raw_data</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">start</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.uploadhandler.FileUploadHandler.receive_data_chunk\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Receives a „chunk” of data from the file upload.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">raw_data</span></code> is a byte string containing the uploaded data.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">start</span></code> is the position in the file where this <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_data</span></code> chunk\nbegins.</p>\n<p>The data you return will get fed into the subsequent upload handlers»\n<code class=\"docutils literal notranslate\"><span class=\"pre\">receive_data_chunk</span></code> methods. In this way, one handler can be a\n„filter” for other handlers.</p>\n<p>Return <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> from <code class=\"docutils literal notranslate\"><span class=\"pre\">receive_data_chunk</span></code> to short-circuit remaining\nupload handlers from getting this chunk. This is useful if you’re\nstoring the uploaded data yourself and don’t want future handlers to\nstore a copy of the data.</p>\n<p>If you raise a <code class=\"docutils literal notranslate\"><span class=\"pre\">StopUpload</span></code> or a <code class=\"docutils literal notranslate\"><span class=\"pre\">SkipFile</span></code> exception, the upload\nwill abort or the file will be completely skipped.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadhandler.FileUploadHandler.file_complete\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">FileUploadHandler.</span></span><span class=\"sig-name descname\"><span class=\"pre\">file_complete</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_size</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.uploadhandler.FileUploadHandler.file_complete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Called when a file has finished uploading.</p>\n<p>The handler should return an <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code> object that will be stored\nin <code class=\"docutils literal notranslate\"><span class=\"pre\">request.FILES</span></code>. Handlers may also return <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> to indicate that\nthe <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code> object should come from subsequent upload handlers.</p>\n</dd></dl>\n\n</section>\n<section id=\"optional-methods\">\n<h3>Optional methods<a class=\"heading-anchor\" href=\"#optional-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Custom upload handlers may also define any of the following optional methods or\nattributes:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadhandler.FileUploadHandler.chunk_size\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">FileUploadHandler.</span></span><span class=\"sig-name descname\"><span class=\"pre\">chunk_size</span></span><a class=\"heading-anchor\" href=\"#django.core.files.uploadhandler.FileUploadHandler.chunk_size\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Size, in bytes, of the „chunks” Django should store into memory and feed\ninto the handler. That is, this attribute controls the size of chunks\nfed into <code class=\"docutils literal notranslate\"><span class=\"pre\">FileUploadHandler.receive_data_chunk</span></code>.</p>\n<p>For maximum performance the chunk sizes should be divisible by <code class=\"docutils literal notranslate\"><span class=\"pre\">4</span></code> and\nshould not exceed 2 GB (2<sup>31</sup> bytes) in size. When there are\nmultiple chunk sizes provided by multiple handlers, Django will use the\nsmallest chunk size defined by any handler.</p>\n<p>The default is 64*2<sup>10</sup> bytes, or 64 KB.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadhandler.FileUploadHandler.new_file\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">FileUploadHandler.</span></span><span class=\"sig-name descname\"><span class=\"pre\">new_file</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">field_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content_type</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content_length</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">charset</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content_type_extra</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.uploadhandler.FileUploadHandler.new_file\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Callback signaling that a new file upload is starting. This is called\nbefore any data has been fed to any upload handlers.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">field_name</span></code> is a string name of the file <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;input&gt;</span></code> field.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">file_name</span></code> is the filename provided by the browser.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code> is the MIME type provided by the browser – E.g.\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'image/jpeg'</span></code>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">content_length</span></code> is the length of the image given by the browser.\nSometimes this won’t be provided and will be <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">charset</span></code> is the character set (i.e. <code class=\"docutils literal notranslate\"><span class=\"pre\">utf8</span></code>) given by the browser.\nLike <code class=\"docutils literal notranslate\"><span class=\"pre\">content_length</span></code>, this sometimes won’t be provided.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type_extra</span></code> is extra information about the file from the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">content-type</span></code> header. See <a class=\"reference internal\" href=\"#django.core.files.uploadedfile.UploadedFile.content_type_extra\" title=\"django.core.files.uploadedfile.UploadedFile.content_type_extra\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">UploadedFile.content_type_extra</span></code></a>.</p>\n<p>This method may raise a <code class=\"docutils literal notranslate\"><span class=\"pre\">StopFutureHandlers</span></code> exception to prevent\nfuture handlers from handling this file.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadhandler.FileUploadHandler.upload_complete\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">FileUploadHandler.</span></span><span class=\"sig-name descname\"><span class=\"pre\">upload_complete</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.uploadhandler.FileUploadHandler.upload_complete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Callback signaling that the entire upload (all files) has completed.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadhandler.FileUploadHandler.handle_raw_input\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">FileUploadHandler.</span></span><span class=\"sig-name descname\"><span class=\"pre\">handle_raw_input</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">input_data</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">META</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content_length</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">boundary</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.uploadhandler.FileUploadHandler.handle_raw_input\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Allows the handler to completely override the parsing of the raw\nHTTP input.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">input_data</span></code> is a file-like object that supports <code class=\"docutils literal notranslate\"><span class=\"pre\">read()</span></code>-ing.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">META</span></code> is the same object as <code class=\"docutils literal notranslate\"><span class=\"pre\">request.META</span></code>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">content_length</span></code> is the length of the data in <code class=\"docutils literal notranslate\"><span class=\"pre\">input_data</span></code>. Don’t\nread more than <code class=\"docutils literal notranslate\"><span class=\"pre\">content_length</span></code> bytes from <code class=\"docutils literal notranslate\"><span class=\"pre\">input_data</span></code>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">boundary</span></code> is the MIME boundary for this request.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">encoding</span></code> is the encoding of the request.</p>\n<p>Return <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> if you want upload handling to continue, or a tuple of\n<code class=\"docutils literal notranslate\"><span class=\"pre\">(POST,</span> <span class=\"pre\">FILES)</span></code> if you want to return the new data structures suitable\nfor the request directly.</p>\n</dd></dl>\n\n</section>\n</section>","rootId":"module-django.core.files.uploadedfile","toc":[{"title":"Uploaded files","anchor":"uploaded-files","children":[]},{"title":"Built-in upload handlers","anchor":"module-django.core.files.uploadhandler","children":[]},{"title":"Writing custom upload handlers","anchor":"writing-custom-upload-handlers","children":[{"title":"Required methods","anchor":"required-methods","children":[]},{"title":"Optional methods","anchor":"optional-methods","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API Reference","url":"/pl/2.1/ref/"},{"docname":"ref/files/index","title":"File handling","url":"/pl/2.1/ref/files/"}],"prev":{"docname":"ref/files/storage","title":"File storage API","url":"/pl/2.1/ref/files/storage/"},"next":{"docname":"ref/forms/index","title":"Forms","url":"/pl/2.1/ref/forms/"},"formats":{"html":"/pl/2.1/ref/files/uploads/","markdown":"/pl/2.1/ref/files/uploads.md","json":"/pl/2.1/ref/files/uploads.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/ref/files/uploads.txt","official":"https://docs.djangoproject.com/pl/2.1/ref/files/uploads/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}