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的面试题集
Nov 19 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
PHP版网站缓存加快打开速度的方法分享
Jun 03 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
php调用shell的方法
Nov 05 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
php实现图片上传、剪切功能
May 07 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 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如何透过ODBC来存取数据库
2006/10/09 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
php的4种常用运行方式详解
2016/12/22 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
wxPython框架类和面板类的使用实例
2014/09/28 Python
详解Django通用视图中的函数包装
2015/07/21 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
python同时替换多个字符串方法示例
2019/09/17 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
Python 在函数上添加包装器
2020/07/28 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
爸爸的花儿落了教学反思
2014/02/20 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
文明单位汇报材料
2014/12/24 职场文书
老龙头导游词
2015/02/11 职场文书
产品调价通知函
2015/04/20 职场文书
干部培训简讯
2015/07/20 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
Python如何让字典保持有序排列
2022/04/29 Python