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中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
php连接数据库代码应用分析
May 29 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
PHP小技巧之函数重载
Jun 02 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
PHP匿名函数(闭包函数)详解
Mar 22 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 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开发中常用的三个表单验证函数使用小结
2010/03/03 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
对python模块中多个类的用法详解
2019/01/10 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python assert关键字原理及实例解析
2019/12/13 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
python和php哪个更适合写爬虫
2020/06/22 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
成品仓管员岗位职责
2013/12/11 职场文书
老公爱的承诺书
2014/03/31 职场文书
团委竞选演讲稿
2014/04/24 职场文书
关于安全的演讲稿
2014/05/09 职场文书
团干部培训方案
2014/06/03 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书