php 文件上传系统手记


Posted in PHP onOctober 26, 2009

整个系统只有带码全部用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."\r\n"; 
fwrite($log,$logtxt); 
} 
?>

由于是第一次写...很多地方有问题,并且在写的时候是改了又改得....忘多多指教
PHP 相关文章推荐
用在PHP里的JS打印函数
Oct 09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
Jun 01 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
基于PHP异步执行的常用方式详解
Jun 03 PHP
利用curl 多线程 模拟 并发的详解
Jun 14 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
Jul 05 PHP
跟我学Laravel之快速入门
Oct 15 PHP
PHP数组实例详解
Jun 26 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
Apr 27 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 PHP
php后台程序与Javascript的两种交互方式
Oct 25 #PHP
PHP 数组教程 定义数组
Oct 23 #PHP
PHP 判断变量类型实现代码
Oct 23 #PHP
PHP 变量类型的强制转换
Oct 23 #PHP
PHP教程 预定义变量
Oct 23 #PHP
PHP 处理图片的类实现代码
Oct 23 #PHP
PHP教程 变量定义
Oct 23 #PHP
You might like
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
php如何获取文件的扩展名
2015/10/28 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
总结一些js自定义的函数
2006/08/05 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
Python中的zip函数使用示例
2015/01/29 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
python 字典操作提取key,value的方法
2019/06/26 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
机械操作工岗位职责
2014/08/08 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
护士自荐信范文
2015/03/25 职场文书
2015年库房工作总结
2015/04/30 职场文书
电力安全学习心得体会
2016/01/18 职场文书
七年级上册生物的课件
2019/08/07 职场文书
Python jiaba库的使用详解
2021/11/23 Python