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+mysql扎实个人基本功
Mar 27 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
php解决约瑟夫环示例
Apr 09 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 PHP
django中的ajax组件教程详解
Oct 18 PHP
PHP实现百度人脸识别
May 06 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
Feb 23 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
如何开发一个虚拟域名系统
2006/10/09 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
javascript数组的扩展实现代码集合
2008/06/01 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
jquery可定制的在线UEditor编辑器
2015/11/17 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
python实现学生通讯录管理系统
2021/02/25 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
品质管理部岗位职责范文
2014/03/01 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
小学生环保演讲稿
2014/04/25 职场文书
个人综合鉴定材料
2014/05/23 职场文书
日语专业求职信
2014/07/04 职场文书
党员自我剖析材料
2014/08/31 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
法人身份证明书
2015/06/18 职场文书
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers