这是利用FormData上传文件夹(前台)一文的后续处理,将PHP脚本收到的文件保存下来。
1.首先应该建立一个文件夹来放置接受到的文件
//创建文件夹
$path = 'model/' . $_POST['creat_edir'];
if ( !file_exists( $path ) ) {
mkdir( $path );
}
2.其次将脚本获取到的文件数组移动到要保存的文件夹中
for ($i=0; $i < $_POST['files_len'] ; $i++) {
$key = "file" . $i;
$store_path = $path . "/" . iconv("UTF-8", "gb2312", $_FILES[$key]["name"]);
move_uploaded_file( $_FILES[$key]["tmp_name"], $store_path );
}
3.要压缩文件夹,首先的获取到文件夹下的所有文件
//获取文件列表(这个函数是网上抄来的嗯。抄来的。链接?看上面的蓝色)
function list_dir( $dir ) {
$result = array();
if ( is_dir( $dir ) ) {
# 读取当前文件夹下的文件
$files_dir = scandir( $dir );
foreach ( $files_dir as $file ) {
# 循环处理文件夹下的文件
if ( $file == '.' || $file == '..' ) {
# 跳过名为 . 和 .. 的文件
continue;
} elseif ( is_dir( $dir.$file ) ) {
# 如果文件夹内还有文件夹 则递归调用本函数
$result = array_merge( $result, list_dir( $dir.$file.'/') );
} else {
array_push( $result, $dir.$file );
}
}
}
return $result;
}
4.压缩文件夹
//获取要压缩的所有文件
$datalist = list_dir( $path . '/' );
//压缩后文件名
$zipname = $path . '.zip';
if ( !file_exists( $zipname ) ) {
# 初始化ZipArchive对象
$zip = new ZipArchive();
#ZIPARCHIVE::CREATE参数,压缩文件不存在会创建一个,已经存在就往里面添加内容
if ( $zip->open( $zipname, ZIPARCHIVE::CREATE ) !== true ) {
echo "3";
echo '无法打开文件,或者文件创建失败';
}
foreach ($datalist as $val ) {
#循环遍历文件放入压缩文件夹中
if ( file_exists( $val ) ) {
$zip->addFile( $val , basename( $val ) );
}
}
$zip->close();
}
Comments | NOTHING