


Detaillierte Erklärung der Funktion move_uploaded_file() in PHP
In diesem Artikel wird hauptsächlich die PHP-Funktion move_uploaded_file() vorgestellt, die die hochgeladene Datei tatsächlich an einen neuen Speicherort verschiebt. Ich hoffe, sie kann allen helfen. Die Funktion
move_uploaded_file()
verschiebt die hochgeladene Datei an einen neuen Speicherort.
Bei Erfolg wird true zurückgegeben, andernfalls wird false zurückgegeben.
Syntax
move_uploaded_file(file,newloc)
参数 | 描述 |
---|---|
file | 必需。规定要移动的文件。 |
newloc | 必需。规定文件的新位置。 |
Beschreibung
Diese Funktion prüft und stellt sicher, dass die Datei angegeben ist per Datei Die Datei ist ein legitimer Upload (d. h. sie wurde ü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 gültige 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.
Tipps und Hinweise
Hinweis: Diese Funktion wird nur für Dateien verwendet, die über HTTP POST hochgeladen werden.
Hinweis: Wenn die Zieldatei bereits vorhanden ist, wird sie überschrieben.
Sicherheitsergänzung
Einführung von w3c, lassen Sie uns über die Probleme sprechen, auf die ich gestoßen bin.
Im Allgemeinen schreiben wir die Speicherdatei wie folgt:
$fileName = $_SERVER['DOCUMENT_ROOT'].'/Basic/uploads/'.$_FILES['file']['name']; move_uploaded_file($_FILES['file']['tmp_name'],$fileName )
Erklären Sie zunächst die Bedeutung dieser beiden Codes: Speichern Sie die Datei direkt , und gleichzeitig ist der Dateiname auch der Name der vom Benutzer hochgeladenen Datei
Okay, jetzt besteht das Risiko:
①Speichern Sie die Datei direkt.
Dies bedeutet, dass die Datei in keiner Weise erkannt wird, wenn ein Benutzer einen Hintergrundcode hochlädt und ihn als JPG-Suffix oder anderes speichert, wenn der Administrator ihn versehentlich PHP zuordnet und dann darauf zugreift Hintergrund, - - Ergebnis Es ist denkbar, dass, wenn er alle Datenbanken im Hintergrund löscht, die gesamte Website direkt GG wird. Kurz gesagt, das direkte Speichern von Dateien ist sehr riskant.
②Verwenden Sie denselben Dateinamen wie den Benutzerdateinamen.
Der obige Code meldet einen Fehler, wenn der Benutzer einen chinesischen Dateinamen verwendet.
Sobald es um den Dateinamen geht, ist die Codierung involviert. Wenn der Dateiname Englisch + Zahlen ist, ist es in Ordnung. Wenn er Chinesisch enthält, wird es ein großes Problem sein und es muss geändert werden -codiert.
Ich denke, eine zuverlässige Speicherung sollte so sein:
① Die von Benutzern hochgeladenen Dateien müssen identifiziert werden.
Dateierkennung, dieser Teil hat viele Funktionen. Ich denke, es ist gut, den MIME-Typ zu verwenden, der auch schwer zu fälschen ist.
② Ändern Sie den Dateinamen.
Ich denke, es ist am besten, den Dateinamen in ein Zeitformat wie „201803264104421“ zu ändern. Sie können den Dateinamen auch mit der Datenbank abgleichen.
Zusätzlich:
hat zwei Parameter. Der erste Parameter ist der temporäre Dateiname nach dem Hochladen, der automatisch vom System generiert wird. Normalerweise lautet der Stil:
$_FILE["file"]["tmp_name"];
wobei file der Name Ihres Front-End-Datei-Upload-Formulars ist.
Der zweite Parameter ist der neue Dateiname inklusive Pfad. Zum Beispiel:
"upload/1.jpg";
Auf diese Weise wird die von Ihnen hochgeladene Datei in das Unterverzeichnis mit dem Namen „upload“ im aktuellen Verzeichnis verschoben und der Dateiname lautet gespeichert als :1.jpg.
Beispiel für die Funktion „move_uploaded_file()“
Verwenden Sie die Funktion „move_uploaded_file()“, um Dateien auf den Server hochzuladen.
<?php $tmp_filename = $_FILES['myupload']['tmp_name']; if(!move_uploaded_file($tmp_filename,"/path/to/dest/{$_FILES['myupload']['name']}")) { echo "An error has occurred moving the uploaded file.<BR>"; echo "Please ensure that if safe_mode is on that the " . "UID PHP is using matches the file."; exit; } else { echo "The file has been successfully uploaded!"; } ?>
move_uploaded_file Fehlerfälle und Lösungen beim Hochladen von Dateien
Heute führe ich eine Methode zum Hochladen von Avatar-Bildern ein, wenn sich Benutzer registrieren Wenn ich das PHP-Skript der Datei ausführe, tritt ein Problem auf: Der PHP-Skriptcode lautet wie folgt:
<?php define('ROOT',dirname(__FILE__).'/'); 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 { if(is_uploaded_file($_FILES['file']['tmp_name'])){ $stored_path = ROOT.'/upload/'.basename($_FILES['file']['name']); if(move_uploaded_file($_FILES['file']['tmp_name'],$stored_path)){ echo "Stored in: " . $stored_path; }else{ echo 'Stored failed:file save error'; } }else{ echo 'Stored failed:no post '; } } } ?>
Wenn ich das obige Skript ausführe, wird das Skript ausgegeben „Gespeichert fehlgeschlagen: Dateispeicherfehler“, es war offensichtlich ein Fehler. In der Datei php_error_log habe ich das Fehlerproblem gesehen: Ich habe endlich den Ort gefunden, an dem der Fehler aufgetreten ist: Das Zielverzeichnis, in dem wir die Bilder speichern, ist nicht vorhanden Berechtigungen für den Benutzer, der PHP ausführt. Beim Ausführen von PHP ist der Benutzer des Skripts nicht derselbe Benutzer, der den Skriptcode geschrieben und den Bildordner erstellt hat, daher muss ich nur die Dateiberechtigungen auf 777 ändern.
PHP Development Learning File Upload (move_uploaded_file)
Funktion: Verschieben Sie die hochgeladene temporäre Datei in das Upload-Verzeichnis. Der Upload wurde im Stammverzeichnis erstellt! ! !
<form action="" enctype="multipart/form-data" method="post" name="uploadfile">上传文件:<input type="file" name="upfile" /><br> <input type="submit" value="上传" /></form> <?php //print_r($_FILES["upfile"]); if(is_uploaded_file($_FILES['upfile']['tmp_name'])){ $upfile=$_FILES["upfile"]; //获取数组里面的值 $name=$upfile["name"];//上传文件的文件名 $type=$upfile["type"];//上传文件的类型 $size=$upfile["size"];//上传文件的大小 $tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径 //判断是否为图片 switch ($type){ case 'image/pjpeg':$okType=true; break; case 'image/jpeg':$okType=true; break; case 'image/gif':$okType=true; break; case 'image/png':$okType=true; break; } if($okType){ /** * 0:文件上传成功<br/> * 1:超过了文件大小,在php.ini文件中设置<br/> * 2:超过了文件的大小MAX_FILE_SIZE选项指定的值<br/> * 3:文件只有部分被上传<br/> * 4:没有文件被上传<br/> * 5:上传文件大小为0 */ $error=$upfile["error"];//上传后系统返回的值 echo "================<br/>"; echo "上传文件名称是:".$name."<br/>"; echo "上传文件类型是:".$type."<br/>"; echo "上传文件大小是:".$size."<br/>"; echo "上传后系统返回的值是:".$error."<br/>"; echo "上传文件的临时存放路径是:".$tmp_name."<br/>"; echo "开始移动上传文件<br/>"; //把上传的临时文件移动到upload目录下面(upload是在根目录下已经创建好的!!!) move_uploaded_file($tmp_name,"upload/".$name); $destination="upload/".$name; echo "================<br/>"; echo "上传信息:<br/>"; if($error==0){ echo "文件上传成功啦!"; echo "<br>图片预览:<br>"; echo "<img src=".$destination.">"; //echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">"; }elseif ($error==1){ echo "超过了文件大小,在php.ini文件中设置"; }elseif ($error==2){ echo "超过了文件的大小MAX_FILE_SIZE选项指定的值"; }elseif ($error==3){ echo "文件只有部分被上传"; }elseif ($error==4){ echo "没有文件被上传"; }else{ echo "上传文件大小为0"; } }else{ echo "请上传jpg,gif,png等格式的图片!"; } } ?>
Ausführungsergebnis:
Verwandte Empfehlungen:
10 empfohlene Artikel zur PHP-Funktion move_uploaded_file()
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Funktion move_uploaded_file() in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Um mehr über Open Source zu erfahren, besuchen Sie bitte: 51CTO Hongmeng Developer Community https://ost.51cto.com Laufumgebung DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. Um eine Anwendung zu erstellen, klicken Sie auf Datei- >newFile->CreateProgect. Vorlage auswählen: [OpenHarmony] EmptyAbility: Geben Sie den Projektnamen, shici, den Namen des Anwendungspakets com.nut.shici und den Speicherort der Anwendung XXX ein (kein Chinesisch, Sonderzeichen oder Leerzeichen). CompileSDK10, Modell: Stage. Gerät

Verwenden Sie die File.length()-Funktion von Java, um die Größe einer Datei zu ermitteln. Die Dateigröße ist eine sehr häufige Anforderung beim Umgang mit Dateioperationen. Java bietet eine sehr praktische Möglichkeit, die Größe einer Datei zu ermitteln, d. h. mithilfe der Länge(. )-Methode der File-Klasse. In diesem Artikel wird erläutert, wie Sie mit dieser Methode die Größe einer Datei ermitteln und entsprechende Codebeispiele angeben. Zuerst müssen wir ein File-Objekt erstellen, um die Datei darzustellen, deren Größe wir ermitteln möchten. So erstellen Sie ein File-Objekt: Filef

So konvertieren Sie einen PHP-Blob in eine Datei: 1. Erstellen Sie eine PHP-Beispieldatei; 2. Über „function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' }) } ”-Methode kann zum Konvertieren von Blob in eine Datei verwendet werden.

Verwenden Sie die Funktion File.renameTo() von Java, um Dateien umzubenennen. In der Java-Programmierung müssen wir häufig Dateien umbenennen. Java stellt die File-Klasse für die Verarbeitung von Dateioperationen bereit, und die Funktion renameTo() kann Dateien problemlos umbenennen. In diesem Artikel wird die Verwendung der Java-Funktion File.renameTo() zum Umbenennen von Dateien vorgestellt und entsprechende Codebeispiele bereitgestellt. Die Funktion File.renameTo() ist eine Methode der File-Klasse.

Verwenden Sie die Funktion File.getParentFile() von Java, um das übergeordnete Verzeichnis einer Datei abzurufen. In der Java-Programmierung müssen wir häufig Dateien und Ordner bedienen. Wenn wir das übergeordnete Verzeichnis einer Datei abrufen müssen, können wir die von Java bereitgestellte Funktion File.getParentFile() verwenden. In diesem Artikel wird die Verwendung dieser Funktion erläutert und Codebeispiele bereitgestellt. Die Dateiklasse in Java ist die Hauptklasse zum Betreiben von Dateien und Ordnern. Es bietet viele Methoden zum Abrufen und Bearbeiten von Dateieigenschaften

Verwenden Sie die Funktion File.getParent() von Java, um den übergeordneten Pfad einer Datei abzurufen. In der Java-Programmierung müssen wir häufig Dateien und Ordner bearbeiten. Manchmal müssen wir den übergeordneten Pfad einer Datei ermitteln, also den Pfad des Ordners, in dem sich die Datei befindet. Die File-Klasse von Java bietet die Methode getParent(), um den übergeordneten Pfad einer Datei oder eines Ordners abzurufen. Die File-Klasse ist Javas abstrakte Darstellung von Dateien und Ordnern. Sie bietet eine Reihe von Methoden zum Bearbeiten von Dateien und Ordnern. Unter ihnen, bekommen

Wie lösche ich eine Datei oder ein Verzeichnis mit der Methode File.delete() in Java? Übersicht: In Java können wir die Methode delete() der File-Klasse verwenden, um eine Datei oder ein Verzeichnis zu löschen. Mit dieser Methode wird die angegebene Datei oder das angegebene Verzeichnis gelöscht. Allerdings ist zu beachten, dass mit dieser Methode nur leere Verzeichnisse oder Dateien gelöscht werden können, die nicht von anderen Programmen geöffnet werden. Wenn das Löschen einer Datei oder eines Verzeichnisses fehlschlägt, können Sie den spezifischen Grund ermitteln, indem Sie IOException abfangen. Schritt 1: Verwandte Pakete importieren Zuerst benötigen wir

Grundlegende Kenntnisse der Android-Architektur. Die Schwachstellen der Kernel-Schicht sind zahlreich und komplex, und es kann auch viele Schwachstellen in der Laufzeitbibliothek der System-Middleware geben, darunter libc, WebKit, SQLite usw. AndroidRunTimeDalvik Virtual Die Maschinen- und Kernelbibliothek der FrameWork-Anwendungsframeworkschicht bietet eine Reihe von Diensten und API-Schnittstellen. Aktivitätsmanager, Inhaltsanbieteransicht, Ressourcenmanager, Benachrichtigungsmanager, Anwendung, Anwendungsschicht, Systemanwendung, Startbildschirm, Startseite, Kontakt, Kontakt, Telefon, Telefon, Browser. Andere Anwendungsentwickler verwenden die Anwendung Rahmenschicht zu
