Maison  >  Article  >  développement back-end  >  Exemple d'analyse d'une méthode pour implémenter plusieurs téléchargements de fichiers en PHP

Exemple d'analyse d'une méthode pour implémenter plusieurs téléchargements de fichiers en PHP

小云云
小云云original
2018-02-05 13:21:371483parcourir

Cet article partage principalement avec vous une méthode de téléchargement de plusieurs fichiers en PHP Auparavant, lors de l'implémentation de la saisie du type de fichier dans le formulaire pour sélectionner plusieurs images, j'ai trouvé un moyen qui n'est peut-être pas le meilleur, mais qui est réalisable. tests personnels et prend en charge ie7 et supérieur et le navigateur Chrome, j'espère que cela pourra aider tout le monde.

Utilisez l'attribut multiple de sélection de fichiers multiples normal sous la forme


<input type="file" id="image" class="file image hidden" name="image[]" multiple="true">

Utilisez ensuite AjaxFileUpload ou d'autres méthodes pour soumettre

et nommez-le en conséquence Le fichier fichier $file[‘image'] est converti en json et imprimé

Format normal


{"name":"7332.png","type":"image\/png","tmp_name":"\/tmp\/phplqppvR","error":0,"size":659}

mais le résultat à ce moment est


{"name":["7656.png","7718.png"],"type":["image/png","image/png"],"tmp_name":["/tmp/phpDzSovj","/tmp/phpP8kWmT"],"error":[0,0],"size":[357,662]}

Tous les attributs sont transformés en tableaux et disposés dans l'ordre

À ce stade, vous pouvez utiliser le code suivant pour enregistrer l'image


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;

Recommandations associées :

Comment implémenter des fonctions courantes de téléchargement de fichiers sur les pages Web PHP

Utilisation d'Alibaba Cloud OSS pour le téléchargement de fichiers PHP

Fichier unique PHP et téléchargement de fichiers multiples examples_php exemples

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn