php 文件上传系统手记
2015-01-24信息快讯网
说是手记,实际上整个程序已经写完了,虽然有点难看,但还行..毕竟是自己动手写得第一个程序...
整个系统只有带码全部用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读取ACCESS数据到MYSQL的代码
php 数组的一个悲剧?
php 归并排序 数组交集
php 冒泡排序 交换排序法
谷歌音乐搜索栏的提示功能php修正代码
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
php中通过Ajax如何实现异步文件上传的代码实例
PHP 遍历文件实现代码
PHP中使用CURL伪造来路抓取页面或文件
关于session在PHP5的配置文件中的详细设置参数说明
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
php中关于普通表单多文件上传的处理方法
php文件上传表单摘自drupal的代码
PHP 图片文件上传实现代码
PHP中文件上传的一个问题
php 网页游戏开发入门教程一(webgame+design)
php后台程序与Javascript的两种交互方式
PHP 数组教程 定义数组
PHP 判断变量类型实现代码
PHP 变量类型的强制转换
PHP教程 预定义变量
火车头discuz6.1 完美采集的php接口文件
frename PHP 灵活文件命名函数 frename
用PHP读取flv文件的播放时间长度
php download.php实现代码 跳转到下载文件(response.redirect)
php 文件夹删除、php清除缓存程序
最新的php 文件上传模型,支持多文件上传
PHP 上传文件的方法(类)
php 图片上传类代码
PHP 上传文件大小限制
PHP 文件上传功能实现代码
php 动态多文件上传
利用discuz实现PHP大文件上传应用实例代码
PHP5+UTF8多文件上传类