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
PHPUnit PHP测试框架安装方法
Mar 23 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
php实现的用户查询类实例
Jun 18 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
php等比例缩放图片及剪切图片代码分享
Feb 13 PHP
php简单统计在线人数的方法
May 10 PHP
PHP利用Socket获取网站的SSL证书与公钥
Jun 18 PHP
PHP耦合设计模式实例分析
Aug 08 PHP
Laravel 实现添加多语言提示信息
Oct 25 PHP
PHP实现抽奖功能实例代码
Jun 30 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
单位速度在实战中的运用
2020/03/04 星际争霸
phpQuery占用内存过多的处理方法
2013/11/13 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
Python实现京东秒杀功能代码
2019/05/16 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
python机器学习实现决策树
2019/11/11 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
宝信软件JAVA工程师面试经历
2012/08/19 面试题
甜品店的创业计划书范文
2014/01/02 职场文书
运动会邀请函范文
2014/01/31 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
小区推广策划方案
2014/06/06 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
外出听课学习心得体会
2016/01/15 职场文书