<?php
function f_postfix($f_tyle,$f_upfiles)
{
$is_pass=false;
$tmp_upfiels=explode("\.",$f_upfiles);//获取上传文件后缀
$tmp_num=count($tmp_upfiels);//统计返回值元素数量
for($num=0;$num<count($f_tyle);$num++)//循环读取定义文件类型数组值
{
//完成文件大小写转换及判断
if(strtolower($tmp_upfiels[$tmp_num-1]==$f_tyle["$num"]))
{
$is_pass=$f_tyle["$num"];//获取文件类型
}
}
return  $is_pass;//返回上传文件类型
}if($_FILES["up"]["size"]<=0)//判断是否上传文件
{
echo "<script>alert('请上传文件');</script>";
}else
{
$f_type=array("txt");//定义上传文件格式
//判断上传文件格式
if(($postf=f_postfix($f_type,$_FILES["up"]["name"]))!=false)
{
$new_path=time().".txt";
if($_FILES["up"]["size"]>0 and $_FILES["up"]["size"]<100000)
{
//$filepath=$record_path.'up1/'.$new_path;//定新的文件名称
//上传文件操作
if($_FILES["up"]["error"]=='0')
{
move_uploaded_file($_FILES["up"]["tmp_name"],'up1/'.$_FILES["up"]["name"]);
echo "<script>alert('上传文件成功');</script>";
     }
}else
{
echo "<script>alert('上传文件超过1MB');</script>";
}
  }else
  {
   echo "<script>alert('上传文件格式只支持txt');</script>";
  }
}
?>
<html>
<head>
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="PHPEclipse 1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>上传文件</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data" >
 <table border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="83">上传文件</td>
    <td width="163"><input type="file" name="up"></td>
    <td width="200"><input type="submit" name="submit" value="上传"></td>
   </tr>
  </table>
  </form>
</body>
</html>如图所示,出现如Deprecated: Function split() is deprecated in D:\wamp\www\upfile.php on line 5
如果用split()函数,会出现如上错误,文件是可以上传到up1文件中。如果使用explode()函数,就无法解析上传格式txt文件。 

解决方案 »

  1.   


    //试试  $pathInfo = pathinfo($f_upfiles);
      

  2.   

    $tmp_upfiels = split("\.",$f_upfiles);//获取上传文件后缀

    $tmp_upfiels = explode(".",$f_upfiles);//获取上传文件后缀
      

  3.   

    你只上传txt文件,弄这么复杂干嘛?
      

  4.   

    //获取上传文件后缀
    $namearr=explode(".",$_FILES['up']['name']);
    $cname=count($namearr);
    $name=$namearr[$cname-1];
      

  5.   


    strrchr($_FILES[$filename]["name"],".");我是这样获取后缀的,你看看有没帮助
      

  6.   

    获取文件后缀
    pathinfo($filename, PATHINFO_EXTENSION)
      

  7.   

    他们都说 Function split() 函数在php 5.3 不建议使用了。你的错误是不是这个原因啊??
      

  8.   

    需要regex 的split, 可用preg_split() 代替
    不需要regex, 只要要快速分割固定的字串, 可用explode() 代替. (速度会比需要regex 的快很多)
    这是网上给出的方案。
    根据你自己的网站可以一试。
      

  9.   

     (1)$pathInfo = pathinfo($f_upfiles); 出现如下错误:Notice: Undefined offset: 3 in D:\wamp\www\upfile.php on line 11
    (2)$tmp_upfiels = explode(".",$f_upfiles);//获取上传文件后缀 这个OK啦!
    (3) $tmp_upfiels=strrchr($_FILES[$filename]["name"],".")出现错误:
    Notice: Undefined variable: filename in D:\wamp\www\upfile.php on line 7
    Notice: Undefined index: in D:\wamp\www\upfile.php on line 7
    我都试过,有一个可以用吧!我是用记事本做编译器测试的,也许是PHP版本低吧!
     
      

  10.   

    error_reporting(E_ALL & ~E_NOTICE) ;  //首行加上这句试试
      

  11.   

    error_reporting(E_ALL & ~E_NOTICE) ; //首行加上这句试试 
    这个确实可以屏蔽我的错误,但是程序还是无法的解析文件后缀名
      

  12.   

    echo pathinfo($f_upfiles, PATHINFO_EXTENSION); 和
    strrchr  不行吗?
      

  13.   

    获取文件后缀
    substr(strrchr($filename, '.'), 1);
      

  14.   


    +1substr(strrchr($_FILES['filename']['name'],"."),1)
      

  15.   

    (1)pathinfo($filename, PATHINFO_EXTENSION)或pathinfo($filename, PATHINFO_EXTENSION)
    这个也可以获取txt值
    (2)echo $tmp_upfiels=substr(strrchr($f_upfiles, '.'), 1); 这个可以获取txt值
    (3substr(strrchr($_FILES['filename']['name'],"."),1)  这个会出现这样错误:Notice: Undefined index: filename in D:\wamp\www\upfile.php on line 6
    也不知道为什么?好像没做什么判断吧!其实大家给我的答案都是可以获取txt值,我感觉是我的判断没做好,
    我把代码粘贴出来给大家看看!function f_postfix($f_tyle,$f_upfiles)
    {
    $is_pass=false;
    //$tmp_upfiels=explode(".",$f_upfiles);//获取上传文件后缀
              echo $tmp_upfiels=substr(strrchr($_FILES['filename']['name'],"."),1);
             //$tmp_upfiels= pathinfo($f_upfiles);
              //$tmp_upfiels=strrchr($_FILES[$filename]["name"],".");
    $tmp_num=count($tmp_upfiels);//统计返回值元素数量
    for($num=0;$num<count($f_tyle);$num++)//循环读取定义文件类型数组值
    {
    //完成文件大小写转换及判断
    if(strtolower($tmp_upfiels[$tmp_num-1]==$f_tyle["$num"]))
    {
    $is_pass=$f_tyle["$num"];//获取文件类型
    }
    }
    return  $is_pass;//返回上传文件类型
    } 应该是我这里的判断没做好!