php 文件上传系统手记_php教程-查字典教程网
php 文件上传系统手记
php 文件上传系统手记
发布时间:2016-12-29 来源:查字典编辑
摘要:整个系统只有带码全部用PHP,没有JS,没有正则...纯纯的PHP...其实别的我也不会呵呵...下面是原表单的html带码...上传文件表...

整个系统只有带码全部用PHP,没有JS,没有正则...纯纯的PHP...其实别的我也不会呵呵...

下面是原表单的html带码...

上传文件表单

复制代码 代码如下:

<form id="upload" action="uplpad.php" enctype="multipart/form-data" method="post">

<div id="upload">

Map Name: <br />

<input type="text" name="mapname" size="12" maxlength="20" />

<br />

File Path:<br />

<input type="file" name="map" size="12" contentEditable="false" />

<input type="hidden" name="MAX_FILE_SIZE" value="8000000">

<br />

<input type="submit" value="Upload" id="x" />

</div>

</form>

表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是 application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.enctype="multipart/form-data"是上传二进制数据; form里面的值以2进制流的方式传过去。

<input type="hidden" name="MAX_FILE_SIZE" value="8000000">这句好像是没有用的...我原以为这个可以限制上传文件大小呢,上传文件大小只有在php.ini里或后面上传的文件的脚本里设置了...我程序里是直接设置php.ini中upload_max_filesize=6M的.

下面是上传程序

Code

复制代码 代码如下:

$uploaddir="./map/";

$typearr=array("rar","zip","w3m","w3x");

$findstr=array("/",""," ","<",">"); //对名称进行过滤

$mapname=str_replace($findstr,'',($_POST['mapname']));

//取扩展名

function upfiletype($filename){

$arr=explode('.',$filename);

$a=count($arr)-1;

return $arr[$a];

}

//字符串是不是纯数字

function isNo($str){

$intarr=array('1','2','3','4','5','6','7','8','9','0','.');

$a=str_replace($intarr,'',$str);

return ($a=="")?1:0;

}

//////控制窗口大小///////

function html(){

echo <<<eof

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>文件上传</title>

<head>

<script>

function ResetSize(){

self.resizeTo(300,300)

self.moveTo(300,200)

}

</script>

</head>

<body onload="ResetSize()">

eof;

}

if (isNo($mapname)){

html();

exit ('有输入正确的地图名称');

}

//判断是否有文件上传

if(!is_uploaded_file($_FILES['map']['tmp_name'])){

html();

exit("你没有上传文件或上传文件大于6M");

}

//判断是不是重复上传

$clintfilename=str_replace($findstr,'',$_FILES['map']['name']);

if(isset($_COOKIE['upload'])){

foreach($_COOKIE['upload'] as $value){

if($value==$clintfilename){

html();

exit("请不要重复上传");

}

}

}

$filetype=strtolower(upfiletype($_FILES['map']['name']));

if(!in_array($filetype,$typearr)){

html();

exit("请上传正确的地图文件,支持rar,zip,w3m,w3x");

}

//判断server文件是否存在

$filename=$mapname.'.'.$filetype;

for($a=1;$fopen=@fopen(($uploaddir.$filename),"r");$a++){

$filename=$mapname."$a".'.'.$filetype;

fclose($fopen);

}

//传输文件开始;

$filepath=$uploaddir.$filename;

if(move_uploaded_file($_FILES['map']['tmp_name'],$filepath)){

//设置一个cookie用来看有没有重复上传

setcookie("upload[]",$clintfilename,time()+60*12);

html();

echo "上传成功";

$log=fopen("upload.log","a7");

$logtxt=date("Ymd")."|".date("H:i")."|".$_SERVER["REMOTE_ADDR"]."|".$filename."rn";

fwrite($log,$logtxt);

}

?>

由于是第一次写...很多地方有问题,并且在写的时候是改了又改得....忘多多指教

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新php教程学习
    热门php教程学习
    编程开发子分类