PHP

PHP生成文件

Hikari 更新于 May 16, 2018

今天BH3群里团长想要做一些文件,里面都有一些特定的函数,我想了一下,做成了PHP给他生成了出来


<?php  
if(isset($_POST['amount'])){ 
	$file_amount = $_POST['amount'];
	if($file_amount>3000){
		echo "<script>alert('抱歉,生成的数量不能超过3000!');window.location.href='index.php';</script>";
	}elseif(!is_numeric($file_amount)){
		echo "<script>alert('抱歉,只能填写数字');window.location.href='index.php';</script>";
	}else{
		//$file_amount = 25;//根据自己要生成的数量自行填写(貌似最大限制是3958的样子)
		$file_str = strlen(floor($file_amount));//计算多少位数
		$datalist = array();
		for ($y=0; $y<=$file_amount; $y++) {//第一个循环创建文件
			$filename=str_pad($y,$file_str,"0",STR_PAD_LEFT);//在文件左边补0
			$myfile = fopen($filename.".txt", "w") or die("Unable to open file!");
			$datalist[] = $filename.".txt";
			$txt = "//Name,,\n@@Name,,\n";//添加文本前缀
			fwrite($myfile, $txt);//创建文本
			for ($x=0; $x<=$y; $x++) {//第二个循环制作文本内容,并将第一循环的数字为结尾
				$xx=str_pad($x,$file_str,"0",STR_PAD_LEFT);//在文件左边补0
				$txt = "@@".$xx.",*,\n";
				fwrite($myfile, $txt);//创建文本
			}
			$txt = "\n@@end\n\n//每一个表示一个图片";//添加文本后缀
			fwrite($myfile, $txt);//创建文本
			fclose($myfile);//关闭此次循环的文本编辑
		}
		//createFile($datalist);

		//function createFile($datalist){//创建打包下载程序
		$zipfilename = "@name.zip";
		//$datalist=array('./pubfile/1.jpg','./pubfile/2.jpg');
		if(!file_exists($zipfilename)){
			$zip = new ZipArchive();
			if ($zip->open($zipfilename, ZipArchive::CREATE)==TRUE) {
				foreach( $datalist as $val){
					if(file_exists($val)){
						$zip->addFile( $val, basename($val));
					}
				}
				$zip->close();
			}
		}
		if(!file_exists($zipfilename)){
			exit("无法找到文件");
		}
		header("Cache-Control: public");
		header("Content-Description: File Transfer");
		header('Content-disposition: attachment; filename='.basename($zipfilename)); //文件名
		header("Content-Type: application/zip"); //zip格式的
		header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
		header('Content-Length: '. filesize($zipfilename)); //告诉浏览器,文件大小
		@readfile($zipfilename);
		@unlink($zipfilename);
		foreach( $datalist as $vale){
		   if(file_exists($vale)){
				@unlink($vale);
		   }
		  }
		//}
	}
}else{
?>
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=0.5,maxinum-scale=2.0,user-scalable=yes"> 
<form action="index.php" method="post" name="form0" id="form0">
	<p></p>
	<p align="center" >生成文件</p>
		<table width="250" border="0" align="center">
			<tr>
				<td width="81" height="18">输入:</td>
				<td width="109"><input type="text" name="amount" /></td>
			</tr>
			<tr>
				<td></td>
				<td><input type="submit" name="Submit" value="生成" /></td>  
			</tr>
		</table>
	<p></p>
</form>
<?
}
?>