Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielanalyse einer Methode zur Implementierung mehrerer Datei-Uploads in PHP

Beispielanalyse einer Methode zur Implementierung mehrerer Datei-Uploads in PHP

小云云
小云云Original
2018-02-05 13:21:371469Durchsuche

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(&#39;errorCode&#39;=>1, &#39;message&#39;=>&#39;请上传文件&#39;));
}
//重新命名$_FILE 存储多个文件上传
$arrayFile = array();
foreach($_FILES[$field] as $key => $value){
  $i = 0;
  if(is_array($value)) {
    foreach ($value as $v) {
      $i++;
      //重命名后重新放入超全局变量_FILE 保证键名唯一 也可直接上传
      $name = $field . &#39;_split_&#39; . $i;
      $_FILES[$name][$key] = $v;
    }
  }
}
//是否上传多文件
if($i > 0){
  for($j = 1; $j <= $i; $j++){ array_push($arrayFile, $field . &#39;_split_&#39; . $j); } }else{ array_push($arrayFile, $field); } //遍历file多个文件 上传 foreach($arrayFile as $file){ if (isset($_FILES[$file]) && $_FILES[$file][&#39;name&#39;]) { //自定义上传方法 具体内容略 $data = $this->uploadFile($file, $path, uniqid());
    if ( isset($data) && !empty($data) ) {
      if(!isset($data[&#39;errors&#39;])){
        //将上传结果存储于$result中 多图片地址使用逗号拼接
        if(isset($result)){
          $result = array(&#39;errorCode&#39;=>0, &#39;message&#39;=>$result[&#39;message&#39;] . &#39;,&#39; . reset($data));
        }else{
          $result = array(&#39;errorCode&#39;=>0, &#39;message&#39;=>reset($data));
        }
      }else{
        //以下为返回错误信息
        if(is_array(reset($data))){
          $message = reset($data)[0];
        }else{
          $message = reset($data);
        }           
        $result = array(&#39;errorCode&#39; => 1, &#39;message&#39; => $message);
      }
    } else {
      $result = array(&#39;errorCode&#39;=>1, &#39;message&#39;=>&#39;上传失败&#39;);
      break;
    }
  } else {
    $result = array(&#39;errorCode&#39;=>1, &#39;message&#39;=>&#39;请上传文件&#39;);
    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!

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