Heim > Artikel > Backend-Entwicklung > Beispielanalyse einer Methode zur Implementierung mehrerer Datei-Uploads in PHP
Dieser Artikel stellt Ihnen hauptsächlich eine Methode zum Hochladen mehrerer Dateien in PHP vor. Bei der Implementierung der Dateitypeingabe im Formular zur Auswahl mehrerer Bilder habe ich einen Weg gefunden, der vielleicht nicht der beste ist, aber machbar ist Persönliche Tests und Unterstützung von ie7 und höher sowie Chrome-Browser, ich hoffe, es kann jedem helfen.
Verwenden Sie das normale Mehrfachattribut für die Mehrfachauswahl von Dateien in der Form
<input type="file" id="image" class="file image hidden" name="image[]" multiple="true">
. Verwenden Sie dann AjaxFileUpload oder andere Methoden zum Senden
und Benennen Sie es entsprechend. Die Dateidatei $file[‘image']
wird in JSON konvertiert und gedruckt
Normales Format
{"name":"7332.png","type":"image\/png","tmp_name":"\/tmp\/phplqppvR","error":0,"size":659}
, aber das Ergebnis ist zu diesem Zeitpunkt
{"name":["7656.png","7718.png"],"type":["image/png","image/png"],"tmp_name":["/tmp/phpDzSovj","/tmp/phpP8kWmT"],"error":[0,0],"size":[357,662]}
Alle Attribute werden in Arrays umgewandelt und in der richtigen Reihenfolge angeordnet
Zu diesem Zeitpunkt können Sie den folgenden Code verwenden, um das Bild zu speichern
if (!isset($_FILES[$field])) { return new JsonResponse(array('errorCode'=>1, 'message'=>'请上传文件')); } //重新命名$_FILE 存储多个文件上传 $arrayFile = array(); foreach($_FILES[$field] as $key => $value){ $i = 0; if(is_array($value)) { foreach ($value as $v) { $i++; //重命名后重新放入超全局变量_FILE 保证键名唯一 也可直接上传 $name = $field . '_split_' . $i; $_FILES[$name][$key] = $v; } } } //是否上传多文件 if($i > 0){ for($j = 1; $j <= $i; $j++){ array_push($arrayFile, $field . '_split_' . $j); } }else{ array_push($arrayFile, $field); } //遍历file多个文件 上传 foreach($arrayFile as $file){ if (isset($_FILES[$file]) && $_FILES[$file]['name']) { //自定义上传方法 具体内容略 $data = $this->uploadFile($file, $path, uniqid()); if ( isset($data) && !empty($data) ) { if(!isset($data['errors'])){ //将上传结果存储于$result中 多图片地址使用逗号拼接 if(isset($result)){ $result = array('errorCode'=>0, 'message'=>$result['message'] . ',' . reset($data)); }else{ $result = array('errorCode'=>0, 'message'=>reset($data)); } }else{ //以下为返回错误信息 if(is_array(reset($data))){ $message = reset($data)[0]; }else{ $message = reset($data); } $result = array('errorCode' => 1, 'message' => $message); } } else { $result = array('errorCode'=>1, 'message'=>'上传失败'); break; } } else { $result = array('errorCode'=>1, 'message'=>'请上传文件'); break; } } //返回上传结果 return $result;
Verwandte Empfehlungen:
So implementieren Sie allgemeine Datei-Upload-Funktionen auf PHP-Webseiten
Verwendung von Alibaba Cloud OSS für PHP-Datei-Upload
PHP-Beispiele für den Upload einzelner Dateien und mehrerer Dateien_php-Beispiele
Das obige ist der detaillierte Inhalt vonBeispielanalyse einer Methode zur Implementierung mehrerer Datei-Uploads in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!