首先讲的是文件上传时,验证学号是否有重复。
当我们导入数据时会有学号重复的问题,那么我们就需要让已经存在的学号不再上传了,即要解决学号重复的问题。
首先我们先将原来表中的所有的学号存入一个数组(设定为arrNo)中,用 $arr = M('student')->getField('no',true); 中的getField函数(tp中自带的函数)实现。然后我们再读取文件中的一行数据,检查该行的学号是否在数组arrNo中 (检测是否存在用函数is_array)如果不存在 则写入一个二维数组arr中,并且把该学号存到arrNo中,存在则进行下一行。。下面为简略图:
读取文件时为了 注重运行效率我使用fopen打开文件,使用fwrite进行写入,使用fclose进行关闭文件 等来进行编写日志文件。
下载文件(当用户导入文件成功后可把文件中的记录进行下载)
public function xz(){
$file_name = "text.txt"; //下载文件名
$file_dir = "./up/"; //下载文件存放目录
//检查文件是否存在
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 ();
}
}