downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

Our source is open

The syntax highlighted source is automatically generated by PHP from the plaintext script. If you're interested in what's behind the several functions we used, you can always take a look at the source of the following files:

Of course, if you want to see the source of this page, we have it available. You can also browse the Git repository for this website on git.php.net.

Source of: /manual/fr/session.upload-progress.php

<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$PARENTS = array();
include_once
dirname(__FILE__) ."/toc/book.session.inc";
$setup = array (
 
'home' =>
  array (
   
0 => 'index.php',
   
1 => 'PHP Manual',
  ),
 
'head' =>
  array (
   
0 => 'UTF-8',
   
1 => 'fr',
  ),
 
'this' =>
  array (
   
0 => 'session.upload-progress.php',
   
1 => 'Progression d\'un t&eacute;l&eacute;chargement en session',
  ),
 
'up' =>
  array (
   
0 => 'book.session.php',
   
1 => 'Sessions',
  ),
 
'prev' =>
  array (
   
0 => 'session.customhandler.php',
   
1 => 'Gestion personnalis&eacute;e des sessions',
  ),
 
'next' =>
  array (
   
0 => 'session.security.php',
   
1 => 'Sessions et s&eacute;curit&eacute;',
  ),
 
'alternatives' =>
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["parents"] = $PARENTS;
manual_setup($setup);

manual_header();
?>
<div id="session.upload-progress" class="chapter">
 <h1>Progression d&#039;un téléchargement en session</h1>


 <p class="para">
  Lorsque l&#039;option de configuration
  <a href="session.configuration.php#ini.session.upload-progress.enabled" class="link">session.upload_progress.enabled</a>
  est active, PHP sera capable de traquer la progression d&#039;un fichier en
  cours de téléchargement. Cette information n&#039;est pas particulièrement utile
  pour la requête de téléchargement en tant que tel, mais pendant le téléchargement,
  une application peut envoyer une requête POST séparée (via
  <acronym>XHR</acronym> par exemple) pour vérifier le statut de ce téléchargement.
 </p>
 <p class="para">
  La progression de téléchargement sera disponible dans la variable super-global
  <var class="varname"><var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var></var> lorsque le téléchargement est en cours,
  et lors d&#039;un envoi en méthode POST d&#039;une variable du même nom que celui
  définit dans l&#039;option de configuration INI
  <a href="session.configuration.php#ini.session.upload-progress.name" class="link">session.upload_progress.name</a>.
  Lorsque PHP détecte une requête POST de ce type, il remplira un tableau dans
  <var class="varname"><var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var></var>, où l&#039;index est une valeur concaténée des options
  de configuration
  <a href="session.configuration.php#ini.session.upload-progress.prefix" class="link">session.upload_progress.prefix</a>
  et
  <a href="session.configuration.php#ini.session.upload-progress.name" class="link">session.upload_progress.name</a>.
  La clé est typiquement récupérée en lisant ces configurations INI, i.e.
  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$key&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">ini_get</span><span style="color: #007700">(</span><span style="color: #DD0000">"session.upload_progress.prefix"</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">[</span><span style="color: #0000BB">ini_get</span><span style="color: #007700">(</span><span style="color: #DD0000">"session.upload_progress.name"</span><span style="color: #007700">)];<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SESSION</span><span style="color: #007700">[</span><span style="color: #0000BB">$key</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
   </div>

  </div>
 </p>
 <p class="para">
  Il est également possible d&#039;<em class="emphasis">annuler</em> le téléchargement courant
  en définissant la clé <em>$_SESSION[$key][&quot;cancel_upload&quot;]</em> à la valeur
  <strong><code>TRUE</code></strong>. Lors du téléchargement de plusieurs fichiers dans la même
  requête, cette action n&#039;annulera que le fichier actuellement en cours de téléchargement,
  ainsi que ceux en attente de téléchargement mais n&#039;annulera pas les téléchargements
  terminés avec succès. Lorsqu&#039;un téléchargement est annulé en utilisant cette méthode,
  la clé <em>error</em> du tableau <var class="varname"><var class="varname"><a href="reserved.variables.files.php" class="classname">$_FILES</a></var></var> sera définie à
  <strong><code>UPLOAD_ERR_EXTENSION</code></strong>.
 </p>
 <p class="para">
  Les options de configuration INI
  <a href="session.configuration.php#ini.session.upload-progress.freq" class="link">session.upload_progress.freq</a>
  et
  <a href="session.configuration.php#ini.session.upload-progress.min-freq" class="link">session.upload_progress.min_freq</a>
  contrôlent la fréquence de mise à jour des informations de progression de téléchargement.
  Avec une configuration raisonnable de ces 2 options, la surcoût en terme
  de charge est quasi nul.
 </p>
 <p class="para">
  <div class="example" id="example-4659">
   <p><strong>Exemple #1 Exemple</strong></p>
   <div class="example-contents"><p>
    Exemple de structure du tableau contenant les informations de
    téléchargement.
   </p></div>
   <div class="example-contents">
<div class="htmlcode"><pre class="htmlcode">&lt;form action=&quot;upload.php&quot; method=&quot;POST&quot; enctype=&quot;multipart/form-data&quot;&gt;
 &lt;input type=&quot;hidden&quot; name=&quot;&lt;?php echo ini_get(&quot;session.upload_progress.name&quot;); ?&gt;&quot; value=&quot;123&quot; /&gt;
 &lt;input type=&quot;file&quot; name=&quot;file1&quot; /&gt;
 &lt;input type=&quot;file&quot; name=&quot;file2&quot; /&gt;
 &lt;input type=&quot;submit&quot; /&gt;
&lt;/form&gt;</pre>
</div>
   </div>

   <div class="example-contents"><p>
    Les données stockées en session ressembleront à :
   </p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$_SESSION</span><span style="color: #007700">[</span><span style="color: #DD0000">"upload_progress_123"</span><span style="color: #007700">]&nbsp;=&nbsp;array(<br />&nbsp;</span><span style="color: #DD0000">"start_time"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">1234567890</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;L'heure&nbsp;de&nbsp;la&nbsp;requête<br />&nbsp;</span><span style="color: #DD0000">"content_length"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">57343257</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">//&nbsp;Longueur&nbsp;du&nbsp;contenu&nbsp;POST<br />&nbsp;</span><span style="color: #DD0000">"bytes_processed"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">453489</span><span style="color: #007700">,&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Quantité&nbsp;d'octets&nbsp;reçus&nbsp;et&nbsp;traités<br />&nbsp;</span><span style="color: #DD0000">"done"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;true&nbsp;lorsque&nbsp;le&nbsp;gestionnaire&nbsp;POST&nbsp;a&nbsp;terminé,&nbsp;avec&nbsp;succès&nbsp;ou&nbsp;non<br />&nbsp;</span><span style="color: #DD0000">"files"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&nbsp;&nbsp;</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"field_name"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">"file1"</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Nom&nbsp;du&nbsp;champ&nbsp;&lt;input/&gt;<br />&nbsp;&nbsp;&nbsp;//&nbsp;Les&nbsp;3&nbsp;éléments&nbsp;suivants&nbsp;sont&nbsp;équivalents&nbsp;à&nbsp;ceux&nbsp;dans&nbsp;$_FILES<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"name"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">"foo.avi"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"tmp_name"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">"/tmp/phpxxxxxx"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"error"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"done"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;True&nbsp;lorsque&nbsp;le&nbsp;gestionnaire&nbsp;POST&nbsp;a&nbsp;terminé&nbsp;de&nbsp;gérer&nbsp;ce&nbsp;fichier<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"start_time"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">1234567890</span><span style="color: #007700">,&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;L'heure&nbsp;de&nbsp;début&nbsp;de&nbsp;requête<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"bytes_processed"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">57343250</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">//&nbsp;Quantité&nbsp;d'octets&nbsp;reçus&nbsp;et&nbsp;traités&nbsp;pour&nbsp;ce&nbsp;fichier<br />&nbsp;&nbsp;</span><span style="color: #007700">),<br />&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;Un&nbsp;autre&nbsp;fichier,&nbsp;en&nbsp;cours&nbsp;de&nbsp;téléchargement,&nbsp;dans&nbsp;la&nbsp;même&nbsp;requête<br />&nbsp;&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"field_name"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">"file2"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"name"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">"bar.avi"</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"tmp_name"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"error"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"done"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"start_time"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">1234567899</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"bytes_processed"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">54554</span><span style="color: #007700">,<br />&nbsp;&nbsp;),<br />&nbsp;)<br />);</span>
</span>
</code></div>
   </div>

  </div>
 </p>

</div>
<?php manual_footer(); ?>
 
show source | credits | sitemap | contact | advertising | mirror sites