Heim  >  Artikel  >  Backend-Entwicklung  >  Einige Probleme beim Hochladen von Dateien in PHP

Einige Probleme beim Hochladen von Dateien in PHP

怪我咯
怪我咯Original
2017-07-04 13:44:381114Durchsuche

Dieser Artikel stellt hauptsächlich relevante Informationen zur Interpretation der Verarbeitungsprobleme beim Hochladen von Dateien in PHP vor. Er ist sehr gut und hat Referenzwert.

Wir sind Durchsuchen Wenn Sie Ihre eigenen Informationen im Browser bearbeiten, werden Sie auf das Hochladen von Avataren stoßen. In der Bibliothek werden wir Dokumente hochladen ... Das Wort „Hochladen“ ist überall.

PHP ist die beste Sprache (Programmierer in anderen Sprachen, bitte schlagen Sie mich nicht...). PHP bietet natürliche Vorteile bei der Handhabung von Interaktionen und verfügt natürlich über leistungsstarke Funktionen zur Verarbeitung hochgeladener Dateien.

Ebenso wie die Übermittlung allgemeiner Daten ist auch für das Hochladen von Dateien ein Formular erforderlich. Lassen Sie uns ein spezielles Formular zum Hochladen von Dateien erstellen.

<form enctype="multipart/form-data" action="upload_file.php" name="upload_form" method="post">
<!--MAX_FILE_SIZE必须在所有的input之前,以后要是想用上传表单,可以在form之后就写隐藏的input-->
<input type="hidden" name="MAX_FILE_SIZE" value=""/>
上传的文件:
<input type="file" name="userfile"/>
<input type="submit" name="sub_button" value="上传文件的提交按钮"/>
</form>

OK, analysieren wir dieses Code-Snippet.

Der obige Enctype gibt das Codierungsformat an, das beim Senden der Daten an den Server verwendet wird. Es hat drei Werte:

Das versteckte Feld MAX_FILE_SIZE (Einheit ist Bytes) muss vor dem Dateieingabefeld platziert werden und sein Wert ist die maximale Größe der Datei. Dies ist ein Vorschlag für Browser, PHP wird dies auch prüfen. Diese Barriere kann jedoch browserseitig umgangen werden. Erwarten Sie also nicht, sie zum Blockieren großer Dateien zu verwenden. Der maximale Dateiwert ist jedoch durch post_max_size= (number) M in php.ini begrenzt. Es ist jedoch besser, dieses Element hinzuzufügen, um den Ärger zu vermeiden, dass Benutzer lange auf das Hochladen großer Dateien warten müssen und dann feststellen, dass das Hochladen großer Dateien fehlgeschlagen ist.

Nachdem der Benutzer das Dateiformular übermittelt hat, kann der Server die Daten akzeptieren. In PHP gibt es eine globale Variable

$_FILES zum Verarbeiten von Dateien. Es wird davon ausgegangen, dass der Upload-Feldname userfile ist (kann im Feld nach Belieben geändert werden).

 $_FILES['userfile']['name'] Der ursprüngliche Name der Client-Datei.

 $_FILES['userfile']['type'] Der MIME-Typ der Datei. Dies wird auf der PHP-Seite nicht überprüft, daher ist dieser Wert möglicherweise noch nicht vorhanden.
 $_FILES['userfile']['size'] Die Größe der hochgeladenen Datei (in Bytes).
           $_FILES['userfile']['tmp_name'] Der temporäre Dateiname, der auf der Serverseite gespeichert wird, nachdem die Datei hochgeladen wurde.
 $_FILES['userfile']['error'] Der Fehlercode im Zusammenhang mit dem Datei-Upload. Wenn der Upload erfolgreich ist, ist der Wert 0.

Nachdem die Datei hochgeladen wurde, wird sie standardmäßig im temporären Standardverzeichnis des Servers gespeichert und das upload_tmp_dir in php.ini wird auf einen anderen Pfad festgelegt.

Hier müssen wir über eine move_uploaded_file()-Funktion sprechen:

Diese Funktion prüft und stellt sicher, dass die durch Datei angegebene Datei eine legal hochgeladene Datei ist ( d. h. über den HTTP-POST-Upload-Mechanismus von PHP hochgeladen). Wenn die Datei legal ist, wird sie in die durch newloc angegebene Datei verschoben.

Wenn es sich bei der Datei nicht um eine legal hochgeladene Datei handelt, wird kein Vorgang ausgeführt und move_uploaded_file() gibt „false“ zurück.

Wenn es sich bei der Datei um eine legitime hochgeladene Datei handelt, die aber aus irgendeinem Grund nicht verschoben werden kann, erfolgt keine Aktion und move_uploaded_file() gibt „false“ zurück und es wird eine Warnung ausgegeben.

Diese Prüfung ist besonders wichtig, wenn die hochgeladene Datei dazu führen kann, dass ihr Inhalt dem Benutzer oder anderen Benutzern dieses Systems angezeigt wird.

Das Folgende ist ein Beispiel für eine PHP-Upload-Datei:

<b>上传文件处理</b>
<?php
if (isset($_FILES[&#39;userfile&#39;])) {
$uploaddir = &#39;upload/&#39;;
$uploadfile = $uploaddir . basename($_FILES[&#39;userfile&#39;][&#39;name&#39;]);
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
if (move_uploaded_file($_FILES[&#39;userfile&#39;][&#39;tmp_name&#39;], $uploadfile)) {
echo &#39;上传文件成功&#39;.&#39;<br>&#39;;
} else {
echo &#39;上传文件失败&#39;.&#39;<br>&#39;;
}
echo &#39;这是上传文件的一些信息:&#39; . &#39;<br>&#39;;
print_r($_FILES);
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
die();
}
?>
<b>上传表单</b>
<!--表单中的enctype属,必须和以下定义保持一致-->
<form enctype="multipart/form-data" action="upload_file.php" name="upload_form" method="post">
<!--MAX_FILE_SIZE必须在所有的input之前,以后要是想用上传表单,可以在form之后就写隐藏的input-->
<input type="hidden" name="MAX_FILE_SIZE" value=""/>
上传的文件:
<input type="file" name="userfile"/>
<hr/>
<input type="submit" name="sub_button" value="上传文件的提交按钮"/>
</form>


Das obige ist der detaillierte Inhalt vonEinige Probleme beim Hochladen von Dateien in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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