Heim >Backend-Entwicklung >PHP-Tutorial >Implementierungscode für das Hochladen von PHP-Bilddateien

Implementierungscode für das Hochladen von PHP-Bilddateien

高洛峰
高洛峰Original
2017-01-06 14:47:402334Durchsuche

Aus Gründen der Sicherheit der Website ist das Hochladen von PHP-Dateien definitiv nicht erlaubt. Wenn jemand Ihr Backend betritt und eine PHP-Datei hochlädt, wird der gesamte Quellcode Ihrer Website gespeichert und wird ihm übertragen, und er kann ihn direkt verpacken um Ihren Code zu sehen. Daher müssen Sie das hochgeladene Verzeichnis und den Dateityp kontrollieren. Im Allgemeinen können nur Bilder hochgeladen werden.

Erstellen Sie ein Datei-Upload-Formular
Es ist sehr nützlich, Benutzern das Hochladen von Dateien aus einem Formular zu ermöglichen.
Bitte schauen Sie sich das folgende HTML-Formular zum Hochladen von Dateien an:

<html> 
<body> 
<form action="upload_file.php" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 
</body> 
</html>

Bitte beachten Sie die folgenden Informationen zu diesem Formular:
ff9c23ada1bcecdd1a0fb5d5a0f18437 Das enctype-Attribut des Tags gibt die Anforderungen beim Senden an das Formular. Welcher Inhaltstyp verwendet werden soll. Verwenden Sie „multipart/form-data“, wenn Ihr Formular Binärdaten erfordert, z. B. Dateiinhalte. Das Attribut „type="file" des Tags
d5fd7aea971a85678ba271703566ebfd gibt an, dass die Eingabe als Datei verarbeitet werden soll. Wenn Sie beispielsweise eine Vorschau in einem Browser anzeigen, wird neben dem Eingabefeld eine Schaltfläche zum Durchsuchen angezeigt.
Hinweis: Benutzern das Hochladen von Dateien zu erlauben, stellt ein großes Sicherheitsrisiko dar. Bitte erlauben Sie nur vertrauenswürdigen Benutzern, Datei-Upload-Vorgänge durchzuführen.
Erstellen Sie ein Upload-Skript
Die Datei „upload_file.php“ enthält den Code zum Hochladen von Dateien:

<?php 
if ($_FILES["file"]["error"] > 0) 
{ 
echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
} 
else 
{ 
echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
} 
?>

Mithilfe des globalen PHP-Arrays $_FILES können Sie Dateien vom Client-Computer auf hochladen der Remote-Server.
Der erste Parameter ist der Eingabename des Formulars, und der zweite Index kann „Name“, „Typ“, „Größe“, „tmp_name“ oder „Fehler“ sein. So:

$_FILES["file"]["name"] - 被上传文件的名称 
$_FILES["file"]["type"] - 被上传文件的类型 
$_FILES["file"]["size"] - 被上传文件的大小,以字节计 
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称 
$_FILES["file"]["error"] - 由文件上传导致的错误代码

Dies ist eine sehr einfache Möglichkeit, Dateien hochzuladen. Aus Sicherheitsgründen sollten Sie Beschränkungen hinzufügen, wer zum Hochladen von Dateien berechtigt ist.
Upload-Beschränkung
In diesem Skript fügen wir eine Beschränkung für Datei-Uploads hinzu. Benutzer können nur .gif- oder .jpeg-Dateien hochladen, und die Dateigröße muss weniger als 20 KB betragen:

<?php 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 20000)) 
{ 
if ($_FILES["file"]["error"] > 0) 
{ 
echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
} 
else 
{ 
echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
} 
} 
else 
{ 
echo "Invalid file"; 
} 
?>

Hinweis: Für IE muss der Typ der erkannten JPG-Datei pjpeg sein, und für Firefox muss es muss jpeg sein.
Speichern Sie die hochgeladene Datei
Das obige Beispiel erstellt eine temporäre Kopie der hochgeladenen Datei im temporären PHP-Ordner des Servers.
Diese temporär kopierte Datei verschwindet, wenn das Skript endet. Um die hochgeladene Datei zu speichern, müssen wir sie an einen anderen Ort kopieren:

<?php 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 20000)) 
{ 
if ($_FILES["file"]["error"] > 0) 
{ 
echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
} 
else 
{ 
echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 
if (file_exists("upload/" . $_FILES["file"]["name"])) 
{ 
echo $_FILES["file"]["name"] . " already exists. "; 
} 
else 
{ 
move_uploaded_file($_FILES["file"]["tmp_name"], 
"upload/" . $_FILES["file"]["name"]); 
echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
} 
} 
} 
else 
{ 
echo "Invalid file"; 
} 
?>

Das obige Skript erkennt, ob die Datei bereits existiert, und kopiert sie in den angegebenen Ordner.
Hinweis: In diesem Beispiel wird die Datei in einem neuen Ordner mit dem Namen „upload“ gespeichert.

Weitere Artikel zum Implementierungscode zum Hochladen von PHP-Bilddateien finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn