<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'features.file-upload.put-method.php',
    1 => 'PUT-Unterst&uuml;tzung',
    2 => 'PUT-Unterst&uuml;tzung',
  ),
  'up' => 
  array (
    0 => 'features.file-upload.php',
    1 => 'Steuerung von Dateiuploads',
  ),
  'prev' => 
  array (
    0 => 'features.file-upload.multiple.php',
    1 => 'Upload mehrerer Dateien',
  ),
  'next' => 
  array (
    0 => 'features.file-upload.errors.seealso.php',
    1 => 'Siehe auch',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    '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">PUT-Unterstützung</h2>
   <p class="para">
    PHP unterstützt die HTTP-PUT-Methode, welche von einigen Clients verwendet
    wird, um Dateien auf dem Server zu speichern. PUT-Anfragen sind weitaus
    unkomplizierter als ein POST-Dateiupload und sehen etwa so aus:
    <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">
    Das würde normalerweise bedeuten, dass der Client den nachfolgenden Inhalt
    als <var class="filename">/path/filename.html</var> auf dem Server speichern
    will. Natürlich ist es keine gute Idee, dass PHP oder Apache jeden
    Benutzer beliebige Dateien überschreiben lässt. Um eine solche Anfrage
    bearbeiten zu können, muss der Webserver erst angewiesen werden, ein
    bestimmtes PHP-Skript für die Abarbeitung aufzurufen. In Apache wird dies
    durch die Direktive <em>Script</em> festgelegt. Sie kann fast
    überall in der Apache-Konfigurationsdatei platziert werden, gebräuchlich
    ist die Platzierung innerhalb eines <code class="literal">&lt;Directory&gt;</code>-
    oder <code class="literal">Virtualhost</code>-Abschnitts. Eine Zeile wie die
    folgende erledigt dies:
    <div class="informalexample">
     <div class="example-contents">
<div class="cdata"><pre>
Script PUT /put.php
</pre></div>
     </div>

    </div>
   </p>
   <p class="simpara">
    Diese Zeile legt fest, dass Apache alle PUT-Anfragen für URIs, die dem
    Kontext entsprechen, in dem diese Zeile steht, an das
    <var class="filename">put.php</var> Skript weiterleitet. Dies setzt natürlich
    voraus, dass PHP aktiv und für die
    <var class="filename">.php</var>-Dateierweiterung registriert
    ist.
   </p>
   <p class="simpara">
    In der put.php könnte anschließend ein Code wie der folgende verwendet
    werden. Dieser würde den Inhalt der hochgeladenen Datei in die Datei
    <var class="filename">myputfile.ext</var> auf dem Server kopieren.
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <p><strong>Beispiel #1 Speichern von HTTP-PUT-Dateien</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">/* PUT Daten kommen in den stdin Stream */<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">/* Eine Datei zum Schreiben öffnen */<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">/* Jeweils 1kB Daten lesen und<br />   in die Datei schreiben */<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">/* Die Streams schließen */<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); ?>