• 技术文章 >后端开发 >php教程

    php 文件上传系统手记_PHP教程

    2016-07-21 15:43:21原创518

    整个系统只有带码全部用PHP,没有JS,没有正则...纯纯的PHP...其实别的我也不会呵呵...
    下面是原表单的html带码...
    上传文件表单

    复制代码 代码如下:



    Map Name:




    File Path:









    表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是 application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.enctype="multipart/form-data"是上传二进制数据; form里面的值以2进制流的方式传过去。
    这句好像是没有用的...我原以为这个可以限制上传文件大小呢,上传文件大小只有在php.ini里或后面上传的文件的脚本里设置了...我程序里是直接设置php.ini中upload_max_filesize=6M的.
    下面是上传程序
    Code
    复制代码 代码如下:

    $uploaddir="./map/";
    $typearr=array("rar","zip","w3m","w3x");
    $findstr=array("//m.sbmmt.com/m/","\\"," ","<",">"); //对名称进行过滤
    $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;
    }
    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);
    }
    ?>

    由于是第一次写...很多地方有问题,并且在写的时候是改了又改得....忘多多指教

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/320744.htmlTechArticle整个系统只有带码全部用PHP,没有JS,没有正则...纯纯的PHP...其实别的我也不会呵呵... 下面是原表单的html带码... 上传文件表单 复制代码 代码...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 文件 上传 系统 手记 整个 系统 有带 全部 PHP 没有 正则 ... 纯纯 PHP...
    上一篇:PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部_PHP教程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 聊聊PHP escapeshellarg函数使用的中文问题• PHP原生类的总结分享• 分享PHP函数使用小工具(附代码示例)• PHP安全编码总结(经验分享)• 非常全面!PHP常见漏洞代码总结!
    1/1

    PHP中文网