English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Einfache Implementierung der php-Dateiupload-Funktion

PHP-Datei-Upload

Mit PHP können Sie Dateien auf den Server hochladen.

Dieser Abschnitt wird im Projekt "test" abgeschlossen, die Verzeichnisstruktur ist wie folgt:

test
|-----upload             # Verzeichnis für Datei-Uploads
|-----form.html          # Formulardatei
|-----upload_file.php    # PHP-Upload-Code

Quellcode-Download:Datei-Upload

Erstellen Sie ein Formular zum Hochladen von Dateien
Es ist sehr nützlich, Benutzern das Hochladen von Dateien aus dem Formular zu erlauben.
Sehen Sie untenstehende HTML-Formular, das Dateien hochladen kann:

<html>
<head>
<meta charset="utf-8">
<title>Runoob-Tutorial(runoob.com)</title>
</head>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
 <label for="file">Dateiname:</label>
 <input type="file" name="file" id="file"><br>
 <input type="submit" name="submit" value="提交">
</form>
</body>
</html>

Speichern Sie den folgenden Code in die Datei form.html:
Einige wichtige Punkte zu den obigen HTML-Formularen sind wie folgt aufgeführt:

1.<form> Attribute enctype legt fest, welche Inhaltstypen beim Absenden des Formulars verwendet werden sollen. Verwenden Sie "multipart", wenn das Formular binäre Daten wie Dateinhalte benötigt./form-data".
2.<input> Attribute type="file" legt fest, dass der Eingang als Datei behandelt werden soll. Zum Beispiel, wenn Sie im Browser betrachten, sehen Sie einen Schalter neben dem Eingabefeld.
Anmerkung:Ermöglichen Sie Benutzern das Hochladen von Dateien ist ein großer Sicherheitsrisiko. Erlauben Sie nur vertrauenswürdigen Benutzern, Datei-Upload-Operationen durchzuführen.

Erstellen Sie einen Upload-Skript
"upload_file.php" Datei enthält den Code zum Hochladen von Dateien:

<?php
if ($_FILES["file"]["error"] > 0)
{
 echo "Fehler: " . $_FILES["file"]["error"] . "<br>";
}
else
{
 echo "Upload-Dateiname: " . $_FILES["file"]["name"] . "<br>";
 echo "Dateityp: " . $_FILES["file"]["type"] . "<br>";
 echo "Dateiüssung: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
 echo "Tempörlicher Speicherort der Datei: " . $_FILES["file"]["tmp_name"];
}
?>

Durch die Verwendung des PHP-Globalarrays $_FILES können Sie von dem Computer des Kunden Dateien auf den Remote-Server hochladen.
Der erste Parameter ist der input name des Formulars, der zweite Index kann "name", "type", "size", "tmp_name" oder "error" sein. Zum Beispiel:
$_FILES["file"]["name"] - Der Name der hochgeladenen Datei
$_FILES["file"]["type"] - Der Typ der hochgeladenen Datei
$_FILES["file"]["size"] - Die Größe der hochgeladenen Datei in Bytes
$_FILES["file"]["tmp_name"] - Name der temporären Kopie der Datei, die auf dem Server gespeichert wird
$_FILES["file"]["error"] - Fehlercodes, die durch Datei-Uploads verursacht werden

Dies ist eine sehr einfache Methode zum Hochladen von Dateien. Aus Sicherheitsgründen sollten Sie Einschränkungen für die hochladbaren Benutzer hinzufügen.

Upload-Einschränkungen
In diesem Skript haben wir Einschränkungen für die Datei-Uploads hinzugefügt. Der Benutzer kann nur .gif, .jpeg, .jpg, .png-Dateien hochladen, und die Dateigröß muss kleiner als 200 kB:

<?php
// Erlaubte Dateiendungen für hochgeladene Bilder
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);  // Erhalten Sie die Dateiendung des Dateinamens
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800) // kleiner als 200 kb
&& in_array($extension, $allowedExts))
{
 if ($_FILES["file"]["error"] > 0)
 {
 echo "Fehler: " . $_FILES["file"]["error"] . "<br>";
 }
 else
 {
 echo "Upload-Dateiname: " . $_FILES["file"]["name"] . "<br>";
 echo "Dateityp: " . $_FILES["file"]["type"] . "<br>";
 echo "Dateiüssung: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
 echo "Tempörlicher Speicherort der Datei: " . $_FILES["file"]["tmp_name"];
 }
}
else
{
 echo "非法的文件格式";
}
?>

Speichern Sie die hochgeladene Datei
Der obige Beispiel erstellt eine temporäre Kopie der hochgeladenen Datei im PHP-Temp-Ordner des Servers.
Dieser temporäre Screenshotdatei wird am Ende des Skripts entfernt. Um die hochgeladene Datei zu speichern, müssen wir sie an einen anderen Ort kopieren:

<?php
// Erlaubte Dateiendungen für hochgeladene Bilder
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
echo $_FILES["file"]["size"];
$extension = end($temp);  // Erhalten Sie die Dateiendung des Dateinamens
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800) // kleiner als 200 kb
&& in_array($extension, $allowedExts))
{
 if ($_FILES["file"]["error"] > 0)
 {
 echo "Fehler: " . $_FILES["file"]["error"] . "<br>";
 }
 else
 {
 echo "Upload-Dateiname: " . $_FILES["file"]["name"] . "<br>";
 echo "Dateityp: " . $_FILES["file"]["type"] . "<br>";
 echo "Dateiüssung: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
 echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
 // 判断当前目录下的upload目录是否存在该文件
 // 如果没有upload目录,你需要创建它,upload目录权限为 777
 if (file_exists("upload/" . $_FILES["file"]["name"]))
 {
 echo $_FILES["file"]["name"] . " 文件已经存在。 ";
 }
 else
 {
 // 如果upload目录不存在该文件则将文件上传到upload目录下
 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
 echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
 }
 }
}
else
{
 echo "非法的文件格式";
}
?>

上面的脚本检测了文件是否已存在,如果不存在,则将文件复制到名为 "upload" 的目录下。
文件上传演示操作如下所示:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

声明:本文内容来源于网络,版权归原作者所有。内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#oldtoolbag.com(在发邮件时,请将#更换为@进行举报,并提供相关证据。一经查实,本站将立即删除涉嫌侵权内容。)

Gefällt mir