判断上传数据库内容是否重复

本文介绍了如何判断上传至数据库的数据是否重复,通过提取文件信息,对比数据库内容,避免重复添加。示例代码展示了学号重复性的检查方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.注意要使用上传功能 表单中需要设置 
enctype="multipart/form-data"


上传文件代码如下:
public function upload(){
		if(IS_GET){
			$this->display();
			// exit;
		}else{
		$upload = new \Think\Upload();// 实例化上传类
		$upload->maxSize = 0 ;// 设置附件上传大小,文件上传的最大文件大小(以字节为单位),0为不限大小
		$upload->exts = array('csv');// 设置附件上传类型,上传的文件的类型
		$upload->rootPath = './Public/Upload/'; // 设置附件上传根目录
		$upload->savePath = ''; // 设置附件上传(子)目录
		// 上传文件
		$info = $upload->upload();
		// dump($info);
		// $model=M('student');
		if(!$info) {// 上传错误提示错误信息
		$this->error($upload->getError());
		}else{// 上传成功 获取上传文件信息
		// 	foreach($info as $file){
		// 	echo $file['savepath'].$file['savename'];
		// }
			$this->import($upload->rootPath.$info['file']['savepath'].$info['file']['savename']);
         // $this->success('上传成功');
	  }
     }
	}

 2.如何判断上传文件的信息是否重复,首先要从文件中获取数据,如果存在则重复,不执行添加代码,如果不存在,则添加到数据库中。下面是一段判断学号上传是否重复的代码,上传成功执行这段代码即可

// 转换格式
    public function import($file){
    	// echo $file;
    	// exit;
    	// $file="./Public/Upload/2018-03-23/5ab4431d120ae.csv";
    	//检测编码格式
    	$encoding=detect_encoding($file);


    	//如果不是utf-8格式,则转换为utf8
    	if($encoding!='UTF-8'){
    		$contens=file_get_contents($file);
    		$contens=mb_convert_encoding($contens,'utf-8',$encoding);
    		file_put_contents($file, $contens);
    	}
    	$fp=fopen($file, 'r');//打开文件,
    	if($fp){
    		$fields=array('no','name','sex');
    		$model=M('newstudent');


    		$arrNo=$model->getField('no',true);//获取表单里的学号,true代表获取全部的学号,如果不写就获取一个
    		// dump($arrNo);
    		// exit;
    		$arr=array();//创建一个数组
    		
    		while(($row=fgetcsv($fp,1000,","))!==false){
    			$row=array_combine($fields, $row);
    			  
    			$ret=in_array($row['no'], $arrNo);//判断是否存在$row['no']中,存在为真
    			// dump($ret);
    			// exit;
               if($ret==false){//如果没有就进
               	$arrNo[]=$row['no'];
                $arr[]=$row;
                $file= './Public/Download/demo.log';//日志文件路径
                $e.= "导入成功";
                file_put_contents($file, $e);

当你需要在一个HTML表单里让用户上传多个文件,并检查这些文件是否已经存在服务器上,可以采取以下步骤: 1. **获取文件数据**:在JavaScript中,你可以使用`FormData`对象来处理文件上传。用户选择文件后,这个对象会自动添加这些文件。 ```javascript let formData = new FormData(); for (let i = 0; i < document.getElementById('file-input').files.length; i++) { formData.append('files[]', document.getElementById('file-input').files[i]); } ``` 这里假设有一个id为`file-input`的input元素用于文件选择。 2. **发送请求**:将`FormData`作为数据发送到服务器端,比如通过`XMLHttpRequest`或者axios等库。 3. **服务器端验证**:在服务器端(如Node.js、PHP或Python),接收到文件后,需要读取文件内容并存储在数据库中。如果你想要检查文件是否存在,可以在接收文件的同时对已存在的文件进行对比。 4. **对比文件内容**:通常比较文件内容的完整性和MD5哈希值,如果新上传的文件内容数据库中已有记录的文件一致,则视为重复。 5. **返回响应**:服务器返回一个状态(比如HTTP状态码409 Conflict表示冲突)和反馈消息给客户端,告诉用户哪些文件已经被其他文件覆盖。 ```javascript fetch('/upload', { method: 'POST', body: formData, }).then(response => { if (!response.ok) { console.error('Duplicate files detected:', response.status); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值