<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/features.file-upload.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'features.file-upload.put-method.php',
    1 => 'Carga por m&eacute;todo PUT',
    2 => 'Carga por m&eacute;todo PUT',
  ),
  'up' => 
  array (
    0 => 'features.file-upload.php',
    1 => 'Gesti&oacute;n de cargas de ficheros',
  ),
  'prev' => 
  array (
    0 => 'features.file-upload.multiple.php',
    1 => 'Cargar m&uacute;ltiples ficheros simult&aacute;neamente',
  ),
  'next' => 
  array (
    0 => 'features.file-upload.errors.seealso.php',
    1 => 'Ver tambi&eacute;n',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'features/file-upload.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="features.file-upload.put-method" class="sect1">
  <h2 class="title">Carga por método PUT</h2>
  <p class="para">
   PHP soporta el método HTTP PUT utilizado por los navegadores para almacenar ficheros en un servidor. Las solicitudes de tipo PUT son mucho más simples que las cargas de ficheros utilizando el tipo POST, y se parecen a:
   <div class="informalexample">
    <div class="example-contents">
<div class="HTTPcode"><pre class="HTTPcode">PUT /path/filename.html HTTP/1.1</pre>
</div>
    </div>

   </div>
  </p>
  <p class="para">
   Normalmente, esto significa que el servidor remoto guardará los datos que siguen en el fichero: <var class="filename">/path/filename.html</var> de su disco. Esto no es, por supuesto, muy seguro permitir que Apache o PHP sobrescriban cualquier fichero de la arborescencia. Para evitar esto, primero se debe indicar al servidor que se desea que un script PHP dado gestione la solicitud. Con Apache, hay una directiva para ello: <em>Script</em>. Puede ser colocada en cualquier lugar del fichero de configuración de Apache. En general, los webmasters la colocan en el bloque <code class="literal">&lt;Directory&gt;</code>, o tal vez en el bloque <code class="literal">&lt;VirtualHost&gt;</code>. La siguiente línea hará muy bien el trabajo:
   <div class="informalexample">
    <div class="example-contents">
<div class="cdata"><pre>
Script PUT /put.php
</pre></div>
    </div>

   </div>
  </p>
  <p class="simpara">
   Indica a Apache que debe enviar las solicitudes de carga por método PUT al script <var class="filename">put.php</var>. Por supuesto, esto presupone que se ha activado PHP para que maneje los ficheros de tipo <var class="filename">.php</var>, y que PHP está activo. El recurso de destino para todas las solicitudes PUT de este script debe ser el script mismo, y no el nombre del fichero que el fichero cargado debe tener.
  </p>
  <p class="simpara">
   Con PHP, se querría hacer algo como lo siguiente en su put.php. Esto copiará el contenido del fichero cargado en el fichero <var class="filename">myputfile.ext</var> en el servidor. Probablemente se querrá realizar algunas verificaciones y/o identificar al usuario antes de realizar esta copia de fichero.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Guardado de ficheros HTTP PUT</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Los datos PUT llegan del flujo */<br /></span><span style="color: #0000BB">$putdata </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"php://input"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Abre un fichero para escritura */<br /></span><span style="color: #0000BB">$fp </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"myputfile.ext"</span><span style="color: #007700">, </span><span style="color: #DD0000">"w"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Lectura de los datos, 1 Ko a la vez y escritura en el fichero */<br /></span><span style="color: #007700">while (</span><span style="color: #0000BB">$data </span><span style="color: #007700">= </span><span style="color: #0000BB">fread</span><span style="color: #007700">(</span><span style="color: #0000BB">$putdata</span><span style="color: #007700">, </span><span style="color: #0000BB">1024</span><span style="color: #007700">))<br /></span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #0000BB">$data</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Cierre del flujo */<br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$putdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div><?php manual_footer($setup); ?>