cvs: phpdoc-de /features file-upload.xml
| From: | Hartmut Holzgraefe | Date: | Sun, 30 Mar 2008 00:41:01 +0000 |
| Subject: | cvs: phpdoc-de /features file-upload.xml | ||
| Groups: | php.doc.de | ||
| Request: | Send a blank email to doc-de+get-2622@lists.php.net to get a copy of this message | ||
hholzgra Sun Mar 30 00:41:01 2008 UTC
Modified files:
/phpdoc-de/features file-upload.xml
Log:
translation update (work in progress)
http://cvs.php.net/viewvc.cgi/phpdoc-de/features/file-upload.xml?r1=1.18&r2=1.19&diff_format=u
Index: phpdoc-de/features/file-upload.xml
diff -u phpdoc-de/features/file-upload.xml:1.18 phpdoc-de/features/file-upload.xml:1.19
--- phpdoc-de/features/file-upload.xml:1.18 Sat Jun 23 13:21:28 2007
+++ phpdoc-de/features/file-upload.xml Sun Mar 30 00:41:01 2008
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.18 $ -->
-<!-- EN-Revision: 1.55 Maintainer: tom Status: ready -->
+<!-- $Revision: 1.19 $ -->
+<!-- EN-Revision: 1.69 Maintainer: hholzgra Status: ready -->
+<!-- Credits: tom -->
<chapter xml:id="features.file-upload" xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Steuerung von Dateiuploads</title>
@@ -37,11 +38,13 @@
<para>
Eine Maske für den Dateiupload kann erstellt werden, indem man
ein Formular entwirft, das ungefähr so aussieht:
+ </para>
+ <para>
<example>
<title>Formular für den Dateiupload</title>
<programlisting role="html">
<![CDATA[
-<form enctype="multipart/form-data" action="_URL_"
method="post">
+<form enctype="multipart/form-data" action="_URL_"
method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
@@ -49,9 +52,14 @@
]]>
</programlisting>
</example>
- Die _URL_ sollte auf eine PHP-Datei verweisen. Das versteckte Feld
- MAX_FILE_SIZE muss dem Dateieingabefeld vorangestellt werden und den
- Wert der maximal akzeptierten Dateigröße in Bytes enthalten.
+ </para>
+ <para>
+ "_URL_" im obigen Beispiel sollte durch den URL eines PHP Skripts
+ ersetzt werden. Das "hidden" Feld MAX_FILE_SIZE muss dem "file"
+ Eingabefeld vorangestellt werden, der angegebene Wert bestimmt
+ die maximale akzeptierte Dateigröße in Bytes. Es ist auch wichtig
+ dass in ihrem Formular <literal>enctype="multipart/form-data"</literal>
+ angegeben ist da die Dateiübertragung nur so funktioniert.
<warning>
<para>
Die maximale Dateigröße MAX_FILE_SIZE ist für den Browser nur
@@ -59,6 +67,9 @@
verlassen Sie sich nicht darauf, dass der Browser Ihrem Wunsch
auch nachkommt! Wie auch immer, die PHP-Einstellungen für die
maximale Dateigröße können nicht getäuscht werden.
+ Sie sollten aber MAX_FILE_SIZE trotzdem nutzen da es Nutzer
+ davor bewahrt zunächst auf die Übertragung der Daten zu warten
+ um dann erst herauszufinden das diese zu groß waren.
</para>
</warning>
</para>
@@ -82,7 +93,8 @@
<link linkend="reserved.variables.files">$_FILES</link> aus unserem
Beispielskript aufgelistet. Beachten Sie, dass dies auf der Annahme
basiert, dass der Name des Dateiuploads wie in dem obigen
- Beispielskript <emphasis>userfile</emphasis> ist.
+ Beispielskript <emphasis>userfile</emphasis> ist. Es kann aber auch
+ jeder andere Name genutzt werden.
<variablelist>
<varlistentry>
<term><varname>$_FILES['userfile']['name']</varname></term>
@@ -173,20 +185,23 @@
<programlisting role="php">
<![CDATA[
<?php
-// In PHP kleiner als 4.1.0 sollten Sie $HTTP_POST_FILES anstatt $_FILES verwenden.
-// In PHP kleiner als 4.0.3 verwenden Sie copy() und is_uploaded_file() anstatt von
-// move_uploaded_file()
+// In PHP kleiner als 4.1.0 sollten Sie $HTTP_POST_FILES anstatt
+// $_FILES verwenden. In PHP kleiner als 4.0.3 verwenden Sie copy()
+// und is_uploaded_file() anstatt von move_uploaded_file()
$uploaddir = '/var/www/uploads/';
+$uploadfile = $uploaddir. $_FILES['userfile']['name'];
print "<pre>";
-if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir .
$_FILES['userfile']['name'])) {
- print "File is valid, and was successfully uploaded. Here's some more debugging
info:\n";
+if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
+ print "File is valid, and was successfully uploaded.";
+ print "Here's some more debugging info:\n";
print_r($_FILES);
} else {
print "Possible file upload attack! Here's some debugging info:\n";
print_r($_FILES);
}
+print "</pre>";
?>
]]>
@@ -208,6 +223,11 @@
verschieben.
</simpara>
<simpara>
+ Wenn im Formular keine Datei ausgewählt wurde so wird
+ $_FILES['userfile']['size'] von PHP auf 0 gesetzt und
+ $_FILES['userfile']['tmp_name'] ist leer.
+ </simpara>
+ <simpara>
Wurde die Datei in dem temporären Verzeichnis nicht verschoben oder
umbenannt, wird sie am Ende des Requests gelöscht.
</simpara>
@@ -291,13 +311,23 @@
Stellen Sie sicher, dass der Wert von <link
linkend="ini.memory-limit">memory_limit</link> groß genug ist.
</simpara>
-<!-- FIXME: max_execution_time INI -->
<simpara>
Wenn <link linkend="ini.max-execution-time">max_execution_time</link>
zu kurz konfiguriert ist, könnte das Skript den Wert überschritten
haben. Stellen Sie sicher, dass der Wert von
<literal>max_execution_time</literal> groß genug ist.
</simpara>
+ <note>
+ <simpara>
+ <link linkend="ini.max-execution-time">max_execution_time</link>
+ beschränkt nur die Ausführungszeit des Skripts selbst. Jegliche
+ Zeit die auf Dinge entfällt die außerhalb des Skripts selbst
+ stattfinden, wie z.B. Systemaufrufe über die <function>system</function>
+ Funktion, <function>sleep</function>, Datenbankabfragen und die
+ für das Hochladen von Dateien benötigte Zeit werden
+ bei der Bestimmung der Ausführungszeit nicht mit einbezogen.
+ </simpara>
+ </note>
<simpara>
Ist <link linkend="ini.post-max-size">post_max_size</link> zu klein
konfiguriert, können große Dateien nicht hochgeladen werden. Stellen
@@ -320,6 +350,10 @@
können wir nicht garantieren, dass Dateien mit exotischen Namen (wie z.B.
mit enthaltenen Leerzeichen) auch wirklich richtig verarbeitet werden.
</simpara>
+ <simpara>
+ Es ist nicht möglich für normale Formularfelder und Dateifelder die
+ gleiche Formularvariable (wie z.B. foo[]) zu nutzen.
+ </simpara>
</sect1>
<sect1 xml:id="features.file-upload.multiple">
@@ -345,7 +379,7 @@
<title>Upload mehrerer Dateien</title>
<programlisting role="html">
<![CDATA[
-<form action="file-upload.php" method="post"
enctype="multipart/form-data">
+<form action="file-upload.php" method="POST"
enctype="multipart/form-data">
Send these files:<br>
<input name="userfile[]" type="file"><br>
<input name="userfile[]" type="file"><br>