Maison  >  Article  >  développement back-end  >  Explication détaillée et téléchargement de fichiers de la méthode de déduplication en PHP

Explication détaillée et téléchargement de fichiers de la méthode de déduplication en PHP

小云云
小云云original
2018-03-29 09:30:501528parcourir

Cet article partage principalement avec vous l'explication détaillée de la méthode de déduplication et du téléchargement de fichiers en PHP Lors du processus d'importation de fichiers en PHP, des événements en double sont souvent rencontrés, nous devons donc dédupliquer puis télécharger.

1. Réflexions

Configurez d'abord un tableau pour stocker les clés primaires et un tableau vide. Analysez le fichier, puis vérifiez si le tableau de clés primaires du tableau à transmettre existe. Définissez le répertoire de téléchargement des pièces jointes. à télécharger.

2. Méthode

S'il y a des données dans la base de données elle-même, il est facile de dupliquer les données importées, alors placez d'abord la clé primaire dans un tableau de clés primaires, puis créez-en une nouvelle. -dimensionnel, puis analysez le csv. S'il est analysé, vous devez fusionner le tableau défini ci-dessus comme nom de clé avec le csv analysé (array_combine). Générez un nouveau tableau. Ensuite, vous devez déterminer si la clé primaire des données à importer et la base de données elle-même sont dupliquées (in_array). Si elles sont dupliquées, cela indiquera que le numéro d'étudiant a été dupliqué. Sinon, stockez le numéro d'étudiant dans le tableau de clé primaire et stockez le contenu des données dans le tableau initialement défini.

3. Code

if($fp){
            $fields=array('no','name','sex');
            $model=M('student');
            $arrno=$model->getField('no',true);
            $arr=array();
            while(($row=fgetcsv($fp,1000,","))!==false){
            	$row=array_combine($fields, $row);
                if(in_array($row['no'],$arrno)){	
                  echo $row[&#39;no&#39;]."学号已经存在"."<br>";
                }else{   
                    $arrno[]=$row[&#39;no&#39;];
                    $arr[]=$row;
                    // dump($arr);
                    // exit;
                    echo $row[&#39;no&#39;]."学号已经导入"."<br>";
                }
                if(count($arr)==1000){
                    $model->addAll($arr);
                    unset($arr);
                }
            }
            dump($arr);
            if(count($arr)>0){
                $model->addAll($arr);
            }
            $this->show(&#39;导入成功&#39;);
            // $this->download();
        }

Télécharger

public function download(){
       $file_name=$file;
       $file_dir="/Public/Download/";
       if(!file_exists($file_dir . $file_name)){
       	echo "文件找不到";
       	exit();
       }else{
       	$file=fopen($file_dir, $file_name,"r");
       	Header("Content-type:application/octet-stream");
       	Header("Accept-Ranges:bytes");
       	Header("Accept-Length:".filesize($file_dir.$file_name));
       	Header("Content-Disposition:attachment;filename".$file_name);
       	echo fread($file,filesize($file_dir.$file_name));
       	fclose($file);
       	exit();
       }
    }

Recommandations associées :

Comment implémenter la déduplication de tableau en PHP Code

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