L'éditeur suivant vous présentera un cas de téléchargement par lots de données vers la base de données (format .csv) en PHP. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Venez jeter un oeil avec l'éditeur
Rappel amical : Le document pour télécharger des données doit être converti en un document au format .csv
Code Front-end :
<form name="importForm" action="import.php" method="POST" enctype="multipart/form-data"> <input type="hidden" value="import_goods" name="file"> <table cellpadding="2" cellspacing="1" class="tb"> <tbody> <tr> <td width="200">选择批量上传文档:</td> <td><input type="file" name="upfilename" id="upfilename" value=""></td> </tr> <tr> <td colspan="2"> <input type="submit" name="submit" value="提交" class="btn"> </td> </tr> </tbody> </table> </form>
Code backend : fichier import.php (uniquement le code principal est collé ici, l'implémentation spécifique La méthode doit être complétée par vous-même)
if(isset($_POST['submit'])){ stripos(PHP_OS, "WIN") !== false ? setlocale(LC_ALL, '') : setlocale(LC_ALL,'zh_CN.GBK'); $fext = substr($_FILES['upfilename']['name'], strrpos($_FILES['upfilename']['name'], '.') + 1); if ($fext != 'csv') { die('请上传csv格式的文件',HTTP_REFERER); } $handle = @fopen($_FILES['upfilename']['tmp_name'], "rb"); $i = 0; $import_type = ''; if ($handle) { while($line_data = fgetcsv($handle, 4096, ',')) { if ($i == 0) { $import_type = trim($line_data[0]); $i = 1; } elseif (intval($line_data[0])) { $line_list[] = $line_data; } } } //循环转换数据格式 foreach ($line_list as $i=> $v) { foreach ($v as $j=> $value) { $line_list[$i][$j] = iconv('GBK', 'UTF-8//IGNORE',$line_list[$i][$j]); } }//编码转换 fclose($handle); if(!empty($line_list)) { // 登记号 $sn = array(); $top_catid = 0; $name = ''; $func_name = ''; switch ($import_type) { case 'patent'; $top_catid = 5; $name = '专利申请号'; $func_name = 'deal_import_patent'; break; case 'trademark'; $top_catid = 4; $name = '商标注册号'; $func_name = 'deal_import_trademark'; break; case 'copyright'; $top_catid = 2185; $name = '登记号'; $func_name = 'deal_import_copyright'; break; default: die('上传文档未明确指定知产类型!'); break; } if ($import_type == 'patent') { foreach($line_list as $lkey => $lval) { $lval[2] = trim($lval[2]); if ($lval[2] == '专利技术') { // 技术专利 if(!empty($lval[1])) { if(in_array($lval[1],$sn)) { die('列表中序号为'.$lval[0].'的知产的'.$name.$lval[1].'与前面的出现重复!');//判断是否有重复的数据(根据自己所需判断) } $sn[] = trim($lval[1]); } else { die('列表中序号为'.$lval[0].'的知产的'.$name.'为空!'); } } else { // 非技术专利 $line_list[$lkey][1] = ''; } } } elseif ($import_type == 'trademark') { foreach($line_list as $lkey => $lval) { if(!empty($lval[1])) { if(in_array($lval[1],$sn)) { die('列表中序号为'.$lval[0].'的知产的'.$name.'与前面的出现重复!'); } $sn[] = $lval[1]; } else { die('列表中序号为'.$lval[0].'的知产的'.$name.'为空!'); } } } if (!empty($sn)) { $sql = 'SELECT serial_number FROM ' .$table_name. ' WHERE top_catid = '.$top_catid.' AND serial_number IN (\'' .implode("','", $sn). '\')'; $result = $goods_db->query($sql); $r = $goods_db->fetch_array(); $exist = array(); foreach ($r as $k=>$v){ $exist[] = $v['serial_number']; } if (!empty($exist)) die($name.'为:'.implode(',',$exist).'的知产已存在');//数据库中是否有相同的数据(根据自己所需判断) } // 调用处理函数 self::$func_name($line_list);//此时$line_list即为你上传文档的数据,数组格式,根据自己所需将数据导入数据库 die('批量导入完成!'); } }
Le format du .csv. Le fichier est :
Recommandations associées :
Le framework thinkPHP5 intègre plupload pour implémenter des imagesTéléchargement par lots
Thinkphp5+PHPExcel implémente le téléchargement par lotsfonction de données de table
plugin jQuery.Uploadify implémente la barre de progressiontéléchargement par lotsfonction d'image
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!