Heim >Backend-Entwicklung >PHP-Problem >Wie lade ich Dateien in PHP hoch? Nach der Lektüre werden Sie es verstehen!
Im vorherigen Artikel habe ich Ihnen „Wie erhalte und erkenne ich Dateiattribute in PHP?“ vorgestellt. (Zusammenfassungsfreigabe) “, das Ihnen eine detaillierte Einführung in das Wissen über Dateiattribute in PHP gibt. In diesem Artikel werfen wir einen Blick darauf, wie wir Dateien in PHP hochladen sollten. Hoffe, es hilft allen!
In unserem täglichen Leben stoßen wir häufig auf die Schritte zum Hochladen von Dateien, z. B. das Hochladen von Bildern an einen Freundeskreis, das Senden von an E-Mails angehängten Dateien usw. Was sollten wir also in unserem PHP-Code tun, um Dateien hochzuladen? ? Das Hochladen von Dateien ist eine der sehr wichtigen Funktionen im PHP-Dateisystem. Schauen wir uns also an, wie eine solche Funktion implementiert wird.
Konfigurieren Sie php.ini
php.ini
想要使用文件上传的功能,首先我们需要配置php.ini,对其中的参数进行合理地设置。那我们先来看一下应该怎样去找到php.ini文件。示例如下:
首先我们输入:
<?php phpinfo(); ?>
输出结果:
由上述结果中,在Loaded Configuration File一栏中可以看到php.ini的具体路径。由此便找到了php.ini文件。
php.ini中的文件太多可以使用ctrl+F来搜索相关配置项。那我们需要配置的参数如下:
file_uploads
: on,说明服务器开启了文件上传功能;如果为 off,则说明服务器关闭了文件上传功能。
upload_tmp_dir
:上传文件的临时目录。在文件被成功上传之前,文件首先会存放到服务器端的临时目录中,不设置的为系统默认的目录。
upload_max_filesize
:服务器允许上传文件的最大值,以MB为单位。
max_execution_time
:PHP 中一个指令所能执行的最大时间,单位是秒。
memory_limit
:PHP 中一个指令所分配的内存空间,单位是 MB。
其中我们需要注意的是:配置完成后想要配置生效的话,需要重启Apache 服务器,配置的参数才生效。
预定义变量 $_FILES
在我们配置完php.ini之后,我们就需要通过预定义变量$_FILES 来对上传文件做一些限制和判断。$_FILES 变量存储的是上传文件的相关信息,其需要保存的信息如下:
$_FILES[filename][name]
:保存上传文件的文件名
$_FILES[filename][size]
: 保存上传文件的大小
$_FILES[filename][tmp_name]
: 保存上传文件的临时名称
$_FILES[filename][type]
:保存上传文件的类型
$_FILES[filename][error]
: 保存上传文件结果的代号,0 则表示成功
我们可以通过预定义变量 $_FILES结合HTML进行示例如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP文件上传</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="upfile"> <input type="submit" value="上传"> </form> </body> </html> <?php if(!empty($_FILES)){ foreach ($_FILES['upfile'] as $key => $value) { echo $key.'=>'.$value.'<br>'; } } ?>
运行程序后,根据表单选择要上传的文件,我以test1.txt为例,输出结果为:
根据保存的信息我们可以得出该文件的相关信息:
文件名为test1.txt;上传文件的类型为text/plain;保存上传文件的临时名称为C:WindowsphpD16F.tmp;0 则表示上传文件成功;文件的大小为5。
单文件上传
通过上面的代码,我们已经得到了要上传文件的基本信息,接下来我们需要使用 move_uploaded_file()
函数来实现上传。它的主要功能就是把刚才上传的文件移动到一个新的位置。它的语法格式如下:
move_uploaded_file(string $filename, string $destination)
其中$filenameb
表示的是上传文件的文件名,这个文件名并不是上传文件的原文件名,而是通过上一步$_FILES中tmp_name得到的文件名;$destinationb
Um die Funktion zum Hochladen von Dateien zu verwenden, müssen wir zunächst php.ini konfigurieren und die Parameter entsprechend einstellen. Schauen wir uns zunächst an, wie man die Datei php.ini findet. Das Beispiel sieht wie folgt aus:
Zuerst geben wir ein:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP文件上传</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="upfile"> <input type="submit" value="上传"> </form> </body> </html> <?php if(!empty($_FILES)){ $tmpname = $_FILES['upfile']['tmp_name']; // 临时文件名称 $name = $_FILES['upfile']['name']; // 文件的原名称 $path = './phptest'; // 上传目录 $file_name = date('YmdHis').rand(100,999).$name;// 避免文件重名,更改文件名称 if(move_uploaded_file($tmpname, $path.'/'.$file_name)){ echo $name." 上传成功!"; }else{ echo $name." 上传失败!"; } } ?>Ausgabeergebnis:
Aus den obigen Ergebnissen können Sie den spezifischen Pfad von php.ini in der Spalte „Geladene Konfigurationsdatei“ sehen. Dies führte dazu, dass die Datei php.ini gefunden wurde.
Wenn in php.ini zu viele Dateien vorhanden sind, können Sie mit Strg+F nach verwandten Konfigurationselementen suchen. Dann sind die Parameter, die wir konfigurieren müssen, wie folgt: 🎜file_uploads
: on, was anzeigt, dass der Server die Datei aktiviert hat Upload-Funktion; wenn sie deaktiviert ist, bedeutet dies, dass der Server die Datei-Upload-Funktion deaktiviert hat. 🎜upload_tmp_dir
: Temporäres Verzeichnis zum Hochladen von Dateien. Bevor die Datei erfolgreich hochgeladen wird, wird sie zunächst im temporären Verzeichnis auf der Serverseite gespeichert. Wenn nicht festgelegt, handelt es sich um das Standardverzeichnis des Systems. 🎜upload_max_filesize
: Die maximale Größe der Dateien, die vom Server hochgeladen werden dürfen, in MB. 🎜max_execution_time
: Die maximale Zeit, die ein Befehl in PHP ausgeführt werden kann, in Sekunden. 🎜memory_limit
: Der von einem Befehl in PHP zugewiesene Speicherplatz in MB. 🎜$_FILES[filename][ name]
: Speichert den Dateinamen der hochgeladenen Datei 🎜$_FILES[filename][size]
: Speichert die Größe der hochgeladenen Datei 🎜 li>$_FILES[filename][tmp_name]
: Speichern Sie den temporären Namen der hochgeladenen Datei 🎜$_FILES[filename][type]
: Speichern Sie den hochgeladenen Dateityp 🎜$_FILES[filename][error]
: Speichern Sie den Codenamen des hochgeladenen Dateiergebnisses, 0 bedeutet Erfolg🎜<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP文件上传</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="upfile[]"><br> <input type="file" name="upfile[]"><br> <input type="file" name="upfile[]"><br> <input type="submit" value="上传"> </form> </body> </html> <?php if(!empty($_FILES)){ $tmpname = $_FILES['upfile']['tmp_name']; $name = $_FILES['upfile']['name']; $path = './phptest'; for ($i=0; $i < count($tmpname); $i++) { $file_name = date('YmdHis').rand(100,999).$name[$i]; if(move_uploaded_file($tmpname[$i], $path.'/'.$file_name)){ echo $name[$i].' 上传成功!<br>'; }else{ echo $name[$i].' 上传失败!<br>'; } } } ?>🎜Wählen Sie nach dem Ausführen des Programms die hochzuladende Datei gemäß dem Formular aus. Ich nehme test1.txt als Beispiel. Das Ausgabeergebnis ist: 🎜🎜🎜🎜Anhand der gespeicherten Informationen können wir die relevanten Informationen der Dateiinformationen abrufen: 🎜🎜Der Dateiname ist test1.txt; der Typ der hochgeladenen Datei ist Text/Plain; der temporäre Name zum Speichern der Die hochgeladene Datei ist C:WindowsphpD16F.tmp; 0 bedeutet, dass die Datei erfolgreich hochgeladen wurde; 🎜🎜🎜🎜Einzeldatei-Upload🎜🎜Durch den obigen Code haben wir die grundlegenden Informationen der hochzuladenden Datei erhalten. Als nächstes müssen wir den
move_uploaded_file()
verwenden > Funktion Upload implementieren. Seine Hauptfunktion besteht darin, die gerade hochgeladene Datei an einen neuen Speicherort zu verschieben. Sein Syntaxformat ist wie folgt: 🎜rrreee🎜wobei $filenameb
den Dateinamen der hochgeladenen Datei darstellt. Dieser Dateiname ist nicht der ursprüngliche Dateiname der hochgeladenen Datei, sondern wird über tmp_name in $_FILES erhalten im vorherigen Schritt. Dateiname; $destinationb
gibt den Speicherort an, an den die hochgeladene Datei verschoben wird. 🎜🎜🎜Die Ausführungsfunktion gibt TRUE zurück, wenn sie erfolgreich ausgeführt wurde, und FALSE, wenn sie fehlschlägt. 🎜🎜Als nächstes schauen wir uns ein Beispiel an: 🎜🎜Laden Sie die Datei test1.txt gerade in einen Ordner namens phptest hoch, den ich im Stammverzeichnis erstellt habe. Der Vorgang ist wie folgt: 🎜rrreee🎜Nach dem Hochladen der Datei Formular lautet das Ausgabeergebnis wie folgt: 🎜🎜🎜🎜如此则表示我想要上传的test2.txt已经上传到我需要的目录中了:
多文件上传
通过上述示例已经了解了单文件上传的过程,但是在日常使用中经常会用到的是多文件上传,那多文件上传应该怎么操作呢?
示例如下:
还和上面的示例一样,上传多个文件到我在根目录里创建的phptest文件夹里
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP文件上传</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="upfile[]"><br> <input type="file" name="upfile[]"><br> <input type="file" name="upfile[]"><br> <input type="submit" value="上传"> </form> </body> </html> <?php if(!empty($_FILES)){ $tmpname = $_FILES['upfile']['tmp_name']; $name = $_FILES['upfile']['name']; $path = './phptest'; for ($i=0; $i < count($tmpname); $i++) { $file_name = date('YmdHis').rand(100,999).$name[$i]; if(move_uploaded_file($tmpname[$i], $path.'/'.$file_name)){ echo $name[$i].' 上传成功!<br>'; }else{ echo $name[$i].' 上传失败!<br>'; } } } ?>
输出结果:
如此结果显示,多个文件已经上传到我的文件夹里了:
推荐学习:《PHP视频教程》
Das obige ist der detaillierte Inhalt vonWie lade ich Dateien in PHP hoch? Nach der Lektüre werden Sie es verstehen!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!