In diesem Artikel werden hauptsächlich zwei Möglichkeiten zum Implementieren des PHP-Datei-Uploads im Detail vorgestellt
Es gibt im Allgemeinen zwei Möglichkeiten, Dateien hochzuladen:
Ja Zwei Arten:
1. Standard-Eingabeformularmethode, normalerweise mit $_FILES zum Empfangen;
2. Übertragung im Base64-Verfahren, normalerweise AJAX-Upload.
Die erste
Standard-Eingabeformularmethode eignet sich zum Hochladen großer Dateien und unterstützt Stapel. Schlüsselsätze des HTML-Codes:
<form enctype="multipart/form-data" method="post" action="upload.php""> <input type="file" name="id_pic[]" accept="image/*" class="form-control" multiple /> <input type="submit" value="上传 " /> </form>
Verschiedene Namen:
<form enctype="multipart/form-data" method="post" action="upload.php""> <input type="file" name="id_pic_1" accept="image/*" class="form-control" /> <input type="file" name="id_pic_2" accept="image/*" class="form-control" /> <input type="submit" value="上传 " /> </form>
Darunter: enctype="multipart/form-data" ist für das Hochladen von Dateien unerlässlich. Darüber hinaus legt type="file" den Eingabetyp fest und Accept="image/*" gibt die Priorität beim Hochladen von Bildern an (MIME-Referenzhandbuch). Multiple unterstützt die gleichzeitige Auswahl mehrerer Dateien, und pic[] empfängt mehrere Dateien in Form eines Arrays. Das mobile Endgerät kann auch den Parameter „capture="camera" hinzufügen, um die Kamera zum Aufnehmen und Hochladen von Bildern auszuwählen.
Backend-Verarbeitung:
Hochgeladene Dateien über $_FILES abrufen.
$files = $_FILES;
Bei der Übertragung mehrerer Dateien ist das Format des zurückgegebenen $_FILES-Arrays unterschiedlich, wenn die Namen unterschiedlich sind.
Bei gleichen Namen:
array(1) { ["id_pic"] => array(5) { ["name"] => array(2) { [0] => string(5) "1.jpg" [1] => string(5) "2.jpg" } ["type"] => array(2) { [0] => string(10) "image/jpeg" [1] => string(10) "image/jpeg" } ["tmp_name"] => array(2) { [0] => string(27) "C:\Windows\Temp\php7A7E.tmp" [1] => string(27) "C:\Windows\Temp\php7A7F.tmp" } ["error"] => array(2) { [0] => int(0) [1] => int(0) } ["size"] => array(2) { [0] => int(77357) [1] => int(56720) } } }
Bei unterschiedlichen Namen:
array(2) { ["id_pic_1"] => array(5) { ["name"] => string(5) "1.jpg" ["type"] => string(10) "image/jpeg" ["tmp_name"] => string(27) "C:\Windows\Temp\phpBBEE.tmp" ["error"] => int(0) ["size"] => int(77357) } ["id_pic_2"] => array(5) { ["name"] => string(5) "2.jpg" ["type"] => string(10) "image/jpeg" ["tmp_name"] => string(27) "C:\Windows\Temp\phpBBEF.tmp" ["error"] => int(0) ["size"] => int(56720) } }
In Paar $ Wenn _FILES eine foreach-Durchquerung durchführt, ist das vorherige Ausgabeformat nicht sehr praktisch. Letzterer kann direkt befahren werden. Wir können eine Methode für die einheitliche Konvertierung schreiben:
function dealFiles($files) { $fileArray = array(); $n = 0; foreach ($files as $key=>$file){ if(is_array($file['name'])) { $keys = array_keys($file); $count = count($file['name']); for ($i=0; $i<$count; $i++) { $fileArray[$n]['key'] = $key; foreach ($keys as $_key){ $fileArray[$n][$_key] = $file[$_key][$i]; } $n++; } }else{ $fileArray = $files; break; } } return $fileArray; }
Okay, wir haben darüber gesprochen, wie das Backend das empfangene $_FILES-Array verarbeitet und es in ein einheitliches Format konvertiert. Die nächsten Aufgaben sind hauptsächlich:
Überprüfen Sie, ob die hochgeladene Datei die Größe überschreitet.
3.
4. Dateiumbenennung;
Beim zweiten Typ geht es hauptsächlich um das Hochladen von Bildern.
Verwenden Sie das Änderungsereignis der Eingabe, um das Bild mit Canvas zu verarbeiten (z. B. Komprimierung) und senden Sie dann den Dateistream über Ajax an das Backend.
Back-End-Verarbeitung:
Das Back-End empfängt schließlich die vom Front-End gesendete Base64-Zeichenfolge und verarbeitet die Zeichenfolge dann zu einer Bild. Bitte verwenden Sie insbesondere das Schlüsselwort base64, um die Bildentwicklungssprache für Google|Baidu zu verwenden. Das vom Front-End generierte Ergebnis enthält eine base64Len, die der Länge der Zeichenfolge entspricht, und das Back-End sollte prüfen, ob die Übermittlung abgeschlossen ist.
//php示例: $img = base64_decode($_POST['img']); $img = imagecreatefromstring($img);
phpSo stellen Sie eine Verbindung zur Oracle-Datenbank her und einfache Analyse
PHP Paket MSSql-Operationsklasse und vollständige Beispielanalyse
phpKernschritte und kurze Analyse der Verbindung zur Oracle-Datenbank
Das obige ist der detaillierte Inhalt vonZwei Möglichkeiten zum Implementieren des Datei-Uploads in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!