<?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文件。
//试试 $pathInfo = pathinfo($f_upfiles);
或
$tmp_upfiels = explode(".",$f_upfiles);//获取上传文件后缀
$namearr=explode(".",$_FILES['up']['name']);
$cname=count($namearr);
$name=$namearr[$cname-1];
strrchr($_FILES[$filename]["name"],".");我是这样获取后缀的,你看看有没帮助
pathinfo($filename, PATHINFO_EXTENSION)
不需要regex, 只要要快速分割固定的字串, 可用explode() 代替. (速度会比需要regex 的快很多)
这是网上给出的方案。
根据你自己的网站可以一试。
(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版本低吧!
这个确实可以屏蔽我的错误,但是程序还是无法的解析文件后缀名
strrchr 不行吗?
substr(strrchr($filename, '.'), 1);
+1substr(strrchr($_FILES['filename']['name'],"."),1)
这个也可以获取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;//返回上传文件类型
} 应该是我这里的判断没做好!