simp Thu Mar 30 01:57:24 2006 UTC
Modified files:
/phpdoc/en/features file-upload.xml
Log:
bug #36905 and included some notes
http://cvs.php.net/viewcvs.cgi/phpdoc/en/features/file-upload.xml?r1=1.87&r2=1.88&diff_format=u
Index: phpdoc/en/features/file-upload.xml
diff -u phpdoc/en/features/file-upload.xml:1.87
phpdoc/en/features/file-upload.xml:1.88
--- phpdoc/en/features/file-upload.xml:1.87 Mon Aug 29 22:17:34 2005
+++ phpdoc/en/features/file-upload.xml Thu Mar 30 01:57:23 2006
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.87 $ -->
+<!-- $Revision: 1.88 $ -->
<chapter id="features.file-upload">
<title>Handling file uploads</title>
@@ -460,46 +460,11 @@
<sect1 id="features.file-upload.put-method">
<title>PUT method support</title>
- <simpara>
- PUT method support has changed between PHP 3 and PHP 4.
- In PHP 4, one should use the standard input stream to read
- the contents of an HTTP PUT.
- </simpara>
- <para>
- <example>
- <title>Saving HTTP PUT files with PHP 4</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-/* PUT data comes in on the stdin stream */
-$putdata = fopen("php://stdin", "r");
-
-/* Open a file for writing */
-$fp = fopen("myputfile.ext", "w");
-
-/* Read the data 1 KB at a time
- and write to the file */
-while ($data = fread($putdata, 1024))
- fwrite($fp, $data);
-
-/* Close the streams */
-fclose($fp);
-fclose($putdata);
-?>
-]]>
- </programlisting>
- </example>
- </para>
- <note>
- <para>
- All documentation below applies to PHP 3 only.
- </para>
- </note>
<para>
- PHP provides support for the HTTP PUT method used by clients such
- as <productname>Netscape Composer</productname> and W3C
<productname>Amaya</productname>.
- PUT requests are much simpler
- than a file upload and they look something like this:
+ PHP provides support for the HTTP PUT method used by some clients to store
+ files on a server.
+ PUT requests are much simpler than a file upload using POST requests
+ and they look something like this:
<informalexample>
<programlisting role="HTTP">
<![CDATA[
@@ -529,24 +494,61 @@
</para>
<simpara>
This tells Apache to send all PUT requests for URIs that match the
- context in which you put this line to the put.php script. This
+ context in which you put this line to the put.php script. This
assumes, of course, that you have PHP enabled for the .php
- extension and PHP is active.
+ extension and PHP is active. The destination resource for all PUT
+ requests to this script has to be the script itself, not a filename the
+ uploaded file should have.
</simpara>
<simpara>
- Inside your put.php file you would then do something like this:
+ With PHP 4 and following you would then do something like the following in
+ your put.php. This would copy the contents of the uploaded file to the
+ file <filename>myputfile.ext</filename> on the server.
+ You would probably want to perform some checks and/or
+ authenticate the user before performing this file copy.
</simpara>
<para>
- <informalexample><programlisting role="php">
+ <example>
+ <title>Saving HTTP PUT files with PHP 4</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+/* PUT data comes in on the stdin stream */
+$putdata = fopen("php://input", "r");
+
+/* Open a file for writing */
+$fp = fopen("myputfile.ext", "w");
+
+/* Read the data 1 KB at a time
+ and write to the file */
+while ($data = fread($putdata, 1024))
+ fwrite($fp, $data);
+
+/* Close the streams */
+fclose($fp);
+fclose($putdata);
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ <note>
+ <para>
+ All documentation below applies to PHP 3 only.
+ </para>
+ </note>
+ <para>
+ <example>
+ <title>Saving HTTP PUT files with PHP 3</title>
+ <programlisting role="php">
<![CDATA[
<?php copy($PHP_UPLOADED_FILE_NAME, $DOCUMENT_ROOT . $REQUEST_URI); ?>
]]>
- </programlisting></informalexample>
+ </programlisting>
+ </example>
</para>
<simpara>
- This would copy the file to the location requested by the remote
- client. You would probably want to perform some checks and/or
- authenticate the user before performing this file copy. The only
+ The only
trick here is that when PHP sees a PUT-method request it stores
the uploaded file in a temporary file just like those handled by
the <link