{"title":"Uploaded Files and Upload Handlers","version":"2.0","locale":"es","docname":"ref/files/uploads","url":"/es/2.0/ref/files/uploads/","canonical":"https://djangodocs.dev/es/2.0/ref/files/uploads/","summary":"During file uploads, the actual file data is stored in request.FILES. Each entry in this dictionary is an UploadedFile object (or a subclass) – a simple…","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\">class</span> </em><span class=\"sig-name descname\">UploadedFile</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=\"/es/2.0/ref/request-response/#django.http.HttpRequest.FILES\" title=\"django.http.HttpRequest.FILES\"><code class=\"xref py py-attr docutils literal notranslate\">request.FILES</code></a>. Each entry in this dictionary is an\n<code class=\"docutils literal notranslate\">UploadedFile</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\">UploadedFile.</span><span class=\"sig-name descname\">read</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\">chunks()</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\">UploadedFile.</span><span class=\"sig-name descname\">multiple_chunks</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">chunk_size<span class=\"o\">=</span><span class=\"default_value\">None</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\">True</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\">UploadedFile.</span><span class=\"sig-name descname\">chunks</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">chunk_size<span class=\"o\">=</span><span class=\"default_value\">None</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\">multiple_chunks()</code> is\n<code class=\"docutils literal notranslate\">True</code>, you should use this method in a loop instead of <code class=\"docutils literal notranslate\">read()</code>.</p>\n<p>In practice, it’s often easiest simply to use <code class=\"docutils literal notranslate\">chunks()</code> all the time.\nLooping over <code class=\"docutils literal notranslate\">chunks()</code> instead of using <code class=\"docutils literal notranslate\">read()</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\">UploadedFile</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\">UploadedFile.</span><span class=\"sig-name descname\">name</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\">my_file.txt</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\">UploadedFile.</span><span class=\"sig-name descname\">size</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\">UploadedFile.</span><span class=\"sig-name descname\">content_type</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\">UploadedFile.</span><span class=\"sig-name descname\">content_type_extra</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\">content-type</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\">UploadedFile.</span><span class=\"sig-name descname\">charset</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\">utf8</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\">Nota</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> line <span class=\"ow\">in</span> uploadedfile<span class=\"p\">:</span>\n    do_something_with<span class=\"p\">(</span>line<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\">'\\n'</code>, the Windows\nconvention <code class=\"docutils literal notranslate\">'\\r\\n'</code>, and the old Macintosh convention <code class=\"docutils literal notranslate\">'\\r'</code>.</p>\n</aside>\n<p>Subclasses of <code class=\"docutils literal notranslate\">UploadedFile</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\">class</span> </em><span class=\"sig-name descname\">TemporaryUploadedFile</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\">TemporaryFileUploadHandler</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\">UploadedFile</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\">TemporaryUploadedFile.</span><span class=\"sig-name descname\">temporary_file_path</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\">class</span> </em><span class=\"sig-name descname\">InMemoryUploadedFile</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\">MemoryFileUploadHandler</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\">MemoryFileUploadHandler</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\">TemporaryFileUploadHandler</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\">django.core.files.uploadhandler</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\">class</span> </em><span class=\"sig-name descname\">MemoryFileUploadHandler</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\">class</span> </em><span class=\"sig-name descname\">TemporaryFileUploadHandler</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\">TemporaryUploadedFile</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\">class</span> </em><span class=\"sig-name descname\">FileUploadHandler</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\">django.core.files.uploadhandler.FileUploadHandler</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\">FileUploadHandler.</span><span class=\"sig-name descname\">receive_data_chunk</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">raw_data</em>, <em class=\"sig-param\">start</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\">raw_data</code> is a byte string containing the uploaded data.</p>\n<p><code class=\"docutils literal notranslate\">start</code> is the position in the file where this <code class=\"docutils literal notranslate\">raw_data</code> chunk\nbegins.</p>\n<p>The data you return will get fed into the subsequent upload handlers”\n<code class=\"docutils literal notranslate\">receive_data_chunk</code> methods. In this way, one handler can be a\n«filter» for other handlers.</p>\n<p>Return <code class=\"docutils literal notranslate\">None</code> from <code class=\"docutils literal notranslate\">receive_data_chunk</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\">StopUpload</code> or a <code class=\"docutils literal notranslate\">SkipFile</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\">FileUploadHandler.</span><span class=\"sig-name descname\">file_complete</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">file_size</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\">UploadedFile</code> object that will be stored\nin <code class=\"docutils literal notranslate\">request.FILES</code>. Handlers may also return <code class=\"docutils literal notranslate\">None</code> to indicate that\nthe <code class=\"docutils literal notranslate\">UploadedFile</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\">FileUploadHandler.</span><span class=\"sig-name descname\">chunk_size</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\">FileUploadHandler.receive_data_chunk</code>.</p>\n<p>For maximum performance the chunk sizes should be divisible by <code class=\"docutils literal notranslate\">4</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\">FileUploadHandler.</span><span class=\"sig-name descname\">new_file</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">field_name</em>, <em class=\"sig-param\">file_name</em>, <em class=\"sig-param\">content_type</em>, <em class=\"sig-param\">content_length</em>, <em class=\"sig-param\">charset</em>, <em class=\"sig-param\">content_type_extra</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\">field_name</code> is a string name of the file <code class=\"docutils literal notranslate\">&lt;input&gt;</code> field.</p>\n<p><code class=\"docutils literal notranslate\">file_name</code> is the filename provided by the browser.</p>\n<p><code class=\"docutils literal notranslate\">content_type</code> is the MIME type provided by the browser – E.g.\n<code class=\"docutils literal notranslate\">'image/jpeg'</code>.</p>\n<p><code class=\"docutils literal notranslate\">content_length</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\">None</code>.</p>\n<p><code class=\"docutils literal notranslate\">charset</code> is the character set (i.e. <code class=\"docutils literal notranslate\">utf8</code>) given by the browser.\nLike <code class=\"docutils literal notranslate\">content_length</code>, this sometimes won’t be provided.</p>\n<p><code class=\"docutils literal notranslate\">content_type_extra</code> is extra information about the file from the\n<code class=\"docutils literal notranslate\">content-type</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\">UploadedFile.content_type_extra</code></a>.</p>\n<p>This method may raise a <code class=\"docutils literal notranslate\">StopFutureHandlers</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\">FileUploadHandler.</span><span class=\"sig-name descname\">upload_complete</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\">FileUploadHandler.</span><span class=\"sig-name descname\">handle_raw_input</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">input_data</em>, <em class=\"sig-param\">META</em>, <em class=\"sig-param\">content_length</em>, <em class=\"sig-param\">boundary</em>, <em class=\"sig-param\">encoding</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\">input_data</code> is a file-like object that supports <code class=\"docutils literal notranslate\">read()</code>-ing.</p>\n<p><code class=\"docutils literal notranslate\">META</code> is the same object as <code class=\"docutils literal notranslate\">request.META</code>.</p>\n<p><code class=\"docutils literal notranslate\">content_length</code> is the length of the data in <code class=\"docutils literal notranslate\">input_data</code>. Don’t\nread more than <code class=\"docutils literal notranslate\">content_length</code> bytes from <code class=\"docutils literal notranslate\">input_data</code>.</p>\n<p><code class=\"docutils literal notranslate\">boundary</code> is the MIME boundary for this request.</p>\n<p><code class=\"docutils literal notranslate\">encoding</code> is the encoding of the request.</p>\n<p>Return <code class=\"docutils literal notranslate\">None</code> if you want upload handling to continue, or a tuple of\n<code class=\"docutils literal notranslate\">(POST, FILES)</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":"/es/2.0/ref/"},{"docname":"ref/files/index","title":"File handling","url":"/es/2.0/ref/files/"}],"prev":{"docname":"ref/files/storage","title":"File storage API","url":"/es/2.0/ref/files/storage/"},"next":{"docname":"ref/forms/index","title":"Forms","url":"/es/2.0/ref/forms/"},"formats":{"html":"/es/2.0/ref/files/uploads/","markdown":"/es/2.0/ref/files/uploads.md","json":"/es/2.0/ref/files/uploads.json"},"source":"https://github.com/django/django/blob/stable/2.0.x/docs/ref/files/uploads.txt","official":"https://docs.djangoproject.com/es/2.0/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","1.9"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}