Heim >Backend-Entwicklung >PHP-Tutorial >Prinzip und Implementierung des PHP-Uploads

Prinzip und Implementierung des PHP-Uploads

巴扎黑
巴扎黑Original
2016-11-11 14:08:381077Durchsuche

Über das Upload-Prinzip und den einfachen Upload-Vorgang:


>
1. Formular-Tag-Enctype-Attribut
enctype="multipart/form- data“ im Formular wird verwendet, um die MIME-Kodierung des Formulars festzulegen. Standardmäßig ist dieses Codierungsformat application/x-www-form-urlencoded und kann nicht zum Hochladen von Dateien verwendet werden.
Nur ​​wenn multipart/form-data verwendet wird und die Übermittlungsmethode Post ist, können die Dateidaten verwendet werden vollständig übertragen werden.
2. Das versteckte Feld MAX_FILE_SIZE


Das versteckte Feld MAX_FILE_SIZE (Einheit: Bytes) muss vor dem Dateieingabefeld platziert werden und sein Wert ist die maximale Größe der empfangenen Datei. Dies ist eine Empfehlung für Browser, PHP prüft dies ebenfalls.
Diese Einstellung kann auf der Browserseite leicht umgangen werden. Erwarten Sie also nicht, diese Funktion zum Blockieren großer Dateien zu verwenden. (Aus Gründen der Benutzerfreundlichkeit ist es jedoch besser, dieses Element dem Formular hinzuzufügen, da dadurch die Mühe vermieden werden kann, dass Benutzer lange warten müssen, um große Dateien hochzuladen, und dann feststellen, dass die Datei zu groß ist und der Upload fehlgeschlagen ist.)



//upload.php print_r($_FILES);?>Array(
[file] => Array
(
) [ name] => image.jpg
[type] => image/jpeg
[tmp_name] => F:wamptmpphp41BB.tmp

[error] => 0

[size] => 73886 )

)




3. Anwendung der globalen Variablen $_FILES

$_FILES['file']['name' ]; // ist der ursprüngliche Dateiname der hochgeladenen Datei
$_FILES['file']['type'] //Der MIME-Typ der hochgeladenen Datei
$_FILES['file'][' size']; //Die Größe der hochgeladenen Datei in Bytes

$_FILES['file']['tmp_name'] //Der temporäre Dateiname, der nach dem Hochladen der Datei auf dem Server gespeichert wird ()

$_FILES['file']['error']; //Fehlercode für das Hochladen der Datei


Standardmäßig wird die hochgeladene Datei gespeichert der temporäre Ordner auf dem Server, und sein Verzeichnis wird in php.ini festgelegt

Einige allgemeine Einstellungen im Zusammenhang mit dem Datei-Upload in php.ini:

file_uploads; //Umschalten, um das Hochladen von Dateien über zuzulassen HTTP. Der Standardwert ist ON, was bedeutet, dass upload_tmp_dir aktiviert ist. // Dateien werden an den Ort hochgeladen, an dem temporäre Dateien auf dem Server gespeichert sind. Wenn nicht angegeben, wird der standardmäßige temporäre Ordner upload_max_filesize verwendet Größe der Dateien, die hochgeladen werden dürfen. Der Standardwert ist 2Mpost_max_size; //Bezieht sich auf den Maximalwert, der über Formular-POST an PHP empfangen werden kann, einschließlich aller Werte im Formular. Der Standardwert ist 8M



Einfacher Code:


//Informationen zur hochgeladenen Datei abrufen
$fileName=$_FILES['file']['name']; $fileType=$_FILES['file']['type']; $fileError=$_FILES['file']['error']; $fileSize=$_FILES['file']['size']; $tempName=$_FILES['file']['tmp_name'];// Temporärer Dateiname

// Upload-Dateityp definieren
$typeList = array("image/jpeg", "image/jpg", "image/png", "image/gif"); Definieren Sie die zulässigen Typen

if($fileError>0){                                                                     use using using         use using ' ' s ' ' s '         durch ‐ ‐ ‐ ‐‐‐ ​ ​ ​ ​ ​ ​ ​ ​Überschreitet php.ini den Wert der Option Upload_MAX_FILESIZE. " message="Datei schreiben fehlgeschlagen";
                  break;                                                                                                                                                                                                                break $message);

} if(!is_uploaded_file($tempName)){ //De Bestimmen Sie, ob es sich um eine per POST hochgeladene Datei handelt
beenden („Nicht über HTTP POST hochgeladen“);
}else{                                                                                         Schädliche Dateien hochladen, z. B. die Dateierweiterung des Virus in ein Bildformat ändern
exit("Die hochgeladene Datei ist kein Bild" //Hochladen eine bestimmte Form Dateibegrenzungsgröße
exit("Die hochgeladene Datei überschreitet die Begrenzungsgröße");
         }else{                                                                                                                                       8 bis GBK Ausgabe
$fileName=str_replace(".", time().".", $fileName);//Fügen Sie im Bild einen Zeitstempel nach dem Namen hinzu, um das Überschreiben von Dateien mit doppelten Namen zu vermeiden
if(move_uploaded_file( $tempName, "uploads/".$fileName)){ echo "Datei erfolgreich hochgeladen! „; 🎜>



Über einige gängige Funktionen zum Hochladen von Dateien in PHP:

file_exists() // Überprüfen Sie, ob die Datei oder das Verzeichnis existiert. is_uploaded_file() // Bestimmen Sie, ob die Datei über HTTP POST hochgeladen wird. move_uploaded_file() // Verschieben Sie die hochgeladene Datei an einen neuen Speicherort. is_writable() // Bestimmen Sie die angegebene Datei Ob der Dateiname beschreibbar ist iconv() //Konvertierung der Zeichenkodierung str_replace() //String-Ersetzung (Ändern des Dateinamens, um doppelte Namen zu verhindern) getimagesize() //Überprüfen Sie, ob es sich um eine Bilddatei handelt (andere Dateitypen ändern sich). auch wenn der Suffixname geändert wird) kann ebenfalls erkannt werden)


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
Vorheriger Artikel:SAE-BetriebsprotokollNächster Artikel:SAE-Betriebsprotokoll