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注入实例
Oct 09 PHP
使用字符串函数输出整数化的PHP版本号
Oct 09 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
php内嵌函数用法实例
Mar 20 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
php提交过来的数据生成为txt文件
Apr 28 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
phpmyadmin下载、安装、配置教程
May 16 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 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 Ajax乱码
2008/04/09 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
python 的列表遍历删除实现代码
2020/04/12 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
提升Python程序性能的7个习惯
2019/04/14 Python
Django的models中on_delete参数详解
2019/07/16 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
大学生职业规划前言模板
2013/12/27 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
个人近期表现材料
2014/02/11 职场文书
求职自荐信怎么写
2014/03/06 职场文书
营销总监岗位职责
2014/09/16 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
小学生思想品德评语
2014/12/31 职场文书
离婚协议书范文2015
2015/01/26 职场文书
湘江北去观后感
2015/06/15 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
小学生反邪教心得体会
2016/01/15 职场文书