/* function CopyDir() 复制目录方法(包含里面文件)
* $dirsrc 原目录
* $dirto 目标目录 *
*/
function CopyDir($dirsrc,$dirto){
if(file_exists($dirto)){ //判断目标目录是否存在或是否是文件
if(!is_dir($dirto)){
echo '该目标不是一个目录,不能拷贝文件进去';
exit;
}
}else{
mkdir($dirto); //如果不存在就新建目录
}
$dir = opendir($dirsrc); //打开原目录
while($filename = readdir($dir)){ //从原目录中读取条数
if($filename !="." && $filename !=".."){ //必须要去除掉 .和..,不然会报错,因为.和..并不是文件和目录。
$scrfile = $dirsrc."/".$filename; //为什么要加上上级目录,如果不加,则在当前目录下并没有被打开的目录的文件。然后
$tofile = $dirto."/".$filename; // copy($scrfile,$tofile)函数会报错,说没有找到该文件或目录;
if(is_dir($scrfile)){
CopyDir($scrfile,$tofile); //递归处理所有的目录
}else{
copy($scrfile,$tofile); //不是目录就拷贝
}
}
}
}
CopyDir('phpMyAdmin','./copy');
//树结构(子分类)
$tmp = [];
$result = [];
foreach ($list as $rule){
$tmp[$rule['id']] = [
'id'=>$rule['id'],
'name'=>$rule['name'],
'departments'=>$rule['departments'],
'pid'=>$rule['pid'],
'child'=>[],
];
}
foreach ($tmp as $k => $rule){
if ($rule['pid'] > 0){
if (isset($tmp[$rule['pid']])) $tmp[$rule['pid']]['child'][] = &$tmp[$k];
}else{
$result[] = &$tmp[$k];
}
}
//树结构(获取下级数据的ID,用于搜索)
$list = Product::query();
if($category_id){
//$category = ProductCategory::query()->where('parent_id',0)->get();
$category = ProductCategory::query()->where('id',$category_id)->get();
$category = json_encode($this->categortTree($category));
/*获取关联的分类ID*/
preg_match_all('/"id.+?:([0-9]+)/',$category,$array);
$list = $list->whereIn('category_id',$array[1]);
}
/*获取产品子级-递归方法*/
public function categortTree($category){
/*声明数据*/
$data = $category;
/*遍历父级数据*/
foreach($data as $k => $v){
/*检索子级数据*/
$category = ProductCategory::query()->where('parent_id','=',$v->id)->get();
if($category){
/*开始递归-为空不插入*/
if(count($category)!=0) $v->vice = $this->categortTree($category);
}
}
return $data;
}
//页面检索
$('#search').change(function(){
//消除上一次匹配到所加的元素样式
$("td[name='search_bs']").each(function () { //循环需要搜索的数组
var wb = $(this).text();
$(this).html(wb);
})
var search_text = $('#search').val();
search_text = $.trim(search_text);
if(search_text!=''){
var regExp = new RegExp(search_text, 'g'); //返回正则表达式字符匹配模式形式
$("td[name='search_bs']").each(function () { //循环需要搜索的数组
var html = $(this).html();
var newHtml = html.replace(regExp, '<span class="highlight">' + search_text + '</span>'); //替换所匹配到的字符
$(this).html(newHtml); //把旧文本改为被替换的
flag = 1;
})
if (flag){
if ($(".highlight").size() >= 1) {
var _top = $(".highlight").eq(0).offset().top; //获取该元素距顶部偏移值
$("body").animate({ //动画移动滚动条的位置
"scrollTop": _top-200 //移动滚动条的位置
}, 200)
}
}
}
})
//PHP大文件下载(实时下载)
$file_dir = '文件路径';
if(file_exists($file_dir)){//检测文件是否存在
$fp=fopen($file_dir,'r');//只读方式打开
$filesize=filesize($file_dir);//文件大小
/***********************header头不要设置错了哦****************************/
//返回的文件(流形式)
header("Content-type: application/octet-stream"); //按照字节大小返回
header("Accept-Ranges: bytes"); //返回文件大小
header("Accept-Length: $filesize"); //这里客户端的弹出对话框,对应的文件名
header("Content-Disposition: attachment; filename=".basename($file_dir)); //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
/*************************************************************************/
/******************************重点要考************************************/
//清空缓冲区
ob_clean();
//刷新缓冲区
flush();
//设置分流 分流是为了不让整个下载文件占用大量的php脚本内存,如果不分流,你的文件又3G 你的php脚本内存就要大于3G
$buffer=1024; //来个文件字节计数器
while(!feof($fp)){
$data=fread($fp,$buffer);
echo $data;//传数据给浏览器端
}
fclose($fp);
exit();
}else{
echo '文件不存在';
}