{"title":"Fichiers téléversés et gestionnaires de téléversement","version":"4.0","locale":"fr","docname":"ref/files/uploads","url":"/fr/4.0/ref/files/uploads/","canonical":"https://djangodocs.dev/fr/4.0/ref/files/uploads/","summary":"Fichiers téléversés Lien vers cette rubrique # class UploadedFile Lien vers cette définition # Durant les téléversements de fichiers, les données de fichiers…","html":"<span id=\"uploaded-files-and-upload-handlers\"></span><h1>Fichiers téléversés et gestionnaires de téléversement<a class=\"heading-anchor\" href=\"#module-django.core.files.uploadedfile\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"uploaded-files\">\n<h2>Fichiers téléversés<a class=\"heading-anchor\" href=\"#uploaded-files\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Durant les téléversements de fichiers, les données de fichiers réelles sont stockées dans <a class=\"reference internal\" href=\"/fr/4.0/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>. Chaque élément de ce dictionnaire est un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code> (ou une sous-classe), un adaptateur autour d’un fichier téléversé. En général, c’est par l’une de ces méthodes que l’on accède au contenu téléversé :</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Lit toutes les données du fichier téléversé. Soyez prudent avec cette méthode : si le fichier concerné est très gros, il pourrait dépasser les capacités de votre système si vous essayez de le lire en mémoire. Il est plutôt recommandé d’utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">chunks()</span></code>, voir ci-dessous.</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si le fichier téléversé est assez gros pour avoir besoin d’être lu en plusieurs segments. Par défaut, cela concerne tous les fichiers plus gros que 2,5 mébioctets, mais cela peut être configuré ; voir ci-dessous.</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un générateur renvoyant des segments du fichier. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">multiple_chunks()</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, il est conseillé d’utiliser cette méthode avec une boucle au lieu d’utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">read()</span></code>.</p>\n<p>En pratique, il est souvent plus simple de toujours utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">chunks()</span></code>. En bouclant sur <code class=\"docutils literal notranslate\"><span class=\"pre\">chunks()</span></code> au lieu d’appeler <code class=\"docutils literal notranslate\"><span class=\"pre\">read()</span></code>, on peut s’assurer que les gros fichiers ne saturent pas la mémoire du système.</p>\n</dd></dl>\n\n<p>Voici quelques attributs utiles de <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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le nom du fichier téléversé (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">mon_fichier.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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La taille en octets du fichier téléversé.</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>L’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">content-type</span></code> associé au fichier téléversé (par ex.  <em class=\"mimetype\">text/plain</em> ou <em class=\"mimetype\">application/pdf</em>). Comme toute donnée en provenance d’un utilisateur, on ne peut pas être certain que le fichier soit vraiment de ce type. Il est toujours nécessaire de valider que le contenu du fichier corresponde bien au type de contenu prétendu par l’en-tête, «  avoir confiance mais contrôler ».</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un dictionnaire contenant des paramètres supplémentaires transmis à l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">content-type</span></code>. Ils sont généralement fournis par des services comme Google App Engine qui interceptent et gèrent les téléversements de fichiers à votre place. Par conséquent, votre gestionnaire peut ne pas recevoir le contenu du fichier téléversé, mais plutôt une URL ou un autre pointeur vers le fichier (voir <span class=\"target\" id=\"index-4\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc2388.html#section-5.3\"><strong>RFC 2388</strong></a>).</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Pour les types de contenu <em class=\"mimetype\">text/*</em>, le codage de caractères (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">utf8</span></code>) indiqué par le navigateur. Encore une fois, « avoir confiance, mais contrôler » est la stratégie la plus sage ici.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Comme pour les fichiers Python normaux, vous pouvez lire le fichier ligne par ligne en bouclant sur le fichier téléversé :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code 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>Les lignes sont découpées en utilisant des <span class=\"target\" id=\"index-5\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-0278/\"><strong>sauts de ligne universels</strong></a>. Les séquences suivantes sont reconnues comme marques de fin de ligne : la convention de fin de ligne Unix <code class=\"docutils literal notranslate\"><span class=\"pre\">'\\n'</span></code>, la convention Windows <code class=\"docutils literal notranslate\"><span class=\"pre\">'\\r\\n'</span></code>, ainsi que l’ancienne convention Macintosh <code class=\"docutils literal notranslate\"><span class=\"pre\">'\\r'</span></code>.</p>\n</aside>\n<p>Parmi les sous-classes de <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code>, on trouve :</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un fichier téléversé vers un emplacement temporaire (c.-à-d. en flux vers disque). Cette classe est utilisée par <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>. En plus des méthodes de <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>, elle possède une méthode supplémentaire :</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le chemin complet du fichier téléversé temporaire.</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un fichier téléversé en mémoire (c.-à-d. en flux vers mémoire). Cette classe est utilisée par <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>Gestionnaires de téléversement intégrés<a class=\"heading-anchor\" href=\"#module-django.core.files.uploadhandler\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Conjointement, <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> et <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> définissent le comportement Django par défaut de téléversement de fichier en plaçant les petits fichiers en mémoire et les plus gros sur le disque. Ils se trouvent dans <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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Gestionnaire de téléversement de fichier pour transférer en flux les téléversements vers la mémoire (utilisé pour de petits fichiers).</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Gestionnaire de téléversement qui écrit en flux les données vers un fichier temporaire en utilisant <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>Écriture de gestionnaires de téléversement personnalisés<a class=\"heading-anchor\" href=\"#writing-custom-upload-handlers\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Tous les gestionnaires de téléversement de fichiers doivent hériter de <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.files.uploadhandler.FileUploadHandler</span></code>. Ils peuvent être placés à n’importe quel endroit.</p>\n<section id=\"required-methods\">\n<h3>Méthodes obligatoires<a class=\"heading-anchor\" href=\"#required-methods\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les gestionnaires de téléversement personnalisés <strong>doivent</strong> définir les méthodes suivantes :</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Reçoit un « segment » de données du fichier téléversé.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">raw_data</span></code> est une chaîne d’octets contenant les données envoyées.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">start</span></code> est la position dans le fichier correspondant au début de ce segment <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_data</span></code>.</p>\n<p>Les données que vous renvoyez seront retransmises aux méthodes <code class=\"docutils literal notranslate\"><span class=\"pre\">receive_data_chunk</span></code> des gestionnaires de téléversement suivants. De cette façon, un gestionnaire peut être un « filtre » pour d’autres gestionnaires.</p>\n<p>Renvoyez <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> depuis <code class=\"docutils literal notranslate\"><span class=\"pre\">receive_data_chunk</span></code> pour empêcher les gestionnaires de téléversement restants de recevoir ce segment. Cela peut être utile si vous stockez vous-même les données reçues et que vous ne souhaitez pas que les gestionnaires suivants stockent une copie des données.</p>\n<p>Si vous générez une exception <code class=\"docutils literal notranslate\"><span class=\"pre\">StopUpload</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">SkipFile</span></code>, le téléversement s’interrompt ou le fichier est complètement ignoré.</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Appelée lorsque le téléversement d’un fichier est terminé.</p>\n<p>Le gestionnaire doit renvoyer un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code> qui sera stocké dans <code class=\"docutils literal notranslate\"><span class=\"pre\">request.FILES</span></code>. Les gestionnaires peuvent aussi renvoyer <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> pour indiquer que l’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code> doit provenir d’un des gestionnaires de téléversement suivants.</p>\n</dd></dl>\n\n</section>\n<section id=\"optional-methods\">\n<h3>Méthodes facultatives<a class=\"heading-anchor\" href=\"#optional-methods\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les gestionnaires de téléversement peuvent aussi définir l’une des méthodes ou des attributs facultatifs suivants :</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Taille, en octets, des segments que Django stocke en mémoire et transmet au gestionnaire. En clair, cet attribut contrôle la taille des segments qui sont envoyés à <code class=\"docutils literal notranslate\"><span class=\"pre\">FileUploadHandler.receive_data_chunk</span></code>.</p>\n<p>Pour des performances optimales, la taille des segments devrait être divisible par <code class=\"docutils literal notranslate\"><span class=\"pre\">4</span></code> sans excéder 2 Gio (2<sup>31</sup> octets). Lorsque différentes tailles de segment sont indiquées par différents gestionnaires, Django utilise la taille de segment la plus petite d’entre elles.</p>\n<p>La valeur par défaut est 64*2<sup>10</sup> octets ou 64 Kio.</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Fonction de rappel signalant qu’un nouvel envoi de fichier démarre. Elle est appelée avant que les données commencent à être envoyées à un gestionnaire de téléversement.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">field_name</span></code> est le nom (chaîne) du champ de fichier <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;input&gt;</span></code>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">file_name</span></code> est le nom de fichier indiqué par le navigateur.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code> est le type MIME indiqué par le navigateur, par exemple <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> est la taille de l’image indiquée par le navigateur. Il arrive que cette valeur ne soit pas indiquée et contienne <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> est le jeu de caractères (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">utf8</span></code>) indiqué par le navigateur. Comme <code class=\"docutils literal notranslate\"><span class=\"pre\">content_length</span></code>, il arrive que cette valeur ne soit pas donnée.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type_extra</span></code> contient des informations supplémentaires au sujet du fichier selon l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">content-type</span></code>. Voir <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>Cette méthode peut générer une exception <code class=\"docutils literal notranslate\"><span class=\"pre\">StopFutureHandlers</span></code> pour empêcher d’autres gestionnaires de gérer ce fichier après celui-ci.</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Fonction de rappel signalant que tout le téléversement est terminé (tous les fichiers).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.uploadhandler.FileUploadHandler.upload_interrupted\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">FileUploadHandler.</span></span><span class=\"sig-name descname\"><span class=\"pre\">upload_interrupted</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.uploadhandler.FileUploadHandler.upload_interrupted\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"3.2\">\n<p class=\"version-note-title\">New in Django 3.2</p></aside>\n<p>Fonction de rappel signalant que le téléversement a été interrompu, par ex. lorsque l’utilisateur a fermé son navigateur avant que le téléversement soit terminé.</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Permet au gestionnaire de surcharger complètement l’analyse de l’entrée HTTP brute.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">input_data</span></code> est un objet de type fichier prenant en charge la lecture (<code class=\"docutils literal notranslate\"><span class=\"pre\">read()</span></code>).</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">META</span></code> est le même objet que <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> est la taille des données dans <code class=\"docutils literal notranslate\"><span class=\"pre\">input_data</span></code>. Ne lisez pas plus de <code class=\"docutils literal notranslate\"><span class=\"pre\">content_length</span></code> octets à partir de <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> est la frontière MIME de cette requête.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">encoding</span></code> est le codage de cette requête.</p>\n<p>Renvoyez <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> si vous voulez que la gestion du téléversement se poursuive, ou un tuple <code class=\"docutils literal notranslate\"><span class=\"pre\">(POST,</span> <span class=\"pre\">FILES)</span></code> si vous voulez renvoyer directement les nouvelles structures de données prêtes à l’emploi par la requête.</p>\n</dd></dl>\n\n</section>\n</section>","rootId":"module-django.core.files.uploadedfile","toc":[{"title":"Fichiers téléversés","anchor":"uploaded-files","children":[]},{"title":"Gestionnaires de téléversement intégrés","anchor":"module-django.core.files.uploadhandler","children":[]},{"title":"Écriture de gestionnaires de téléversement personnalisés","anchor":"writing-custom-upload-handlers","children":[{"title":"Méthodes obligatoires","anchor":"required-methods","children":[]},{"title":"Méthodes facultatives","anchor":"optional-methods","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/4.0/ref/"},{"docname":"ref/files/index","title":"Gestion des fichiers","url":"/fr/4.0/ref/files/"}],"prev":{"docname":"ref/files/storage","title":"API de stockage des fichiers","url":"/fr/4.0/ref/files/storage/"},"next":{"docname":"ref/forms/index","title":"Formulaires","url":"/fr/4.0/ref/forms/"},"formats":{"html":"/fr/4.0/ref/files/uploads/","markdown":"/fr/4.0/ref/files/uploads.md","json":"/fr/4.0/ref/files/uploads.json"},"source":"https://github.com/django/django/blob/stable/4.0.x/docs/ref/files/uploads.txt","official":"https://docs.djangoproject.com/fr/4.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","it","pt-br","ko","es","el","pl"]}