主页教程PHP建站教程查看内容

php简单文件上传分目录存放 文件上传的参数详解

2015-02-08 | 发布者: vers | 栏目:PHP建站教程

1.
php文件上传过程:
 
文件上传注意事项:
提交方式使用post,声明enctype="multipart/form-data"
移动上传后的临时目录文件使用函数 move_uploader_file移动到我们想要的真实目录

文件上传的参数详解:
$_FILES
Array
(
    [filename] => Array
        (
            [name] => 1.png  //文件原名
            [type] => image/png  //文件类型
            [tmp_name] => C:\Windows\Temp\php8F36.tmp   //临时文件路径
            [error] => 0   //错误代码,0表示无错
            [size] => 945232   //文件的大小,以字节为单位
        )
)
 
如果上传出错,参考对应的错误代码
其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 
其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 
其值为 3,文件只有部分被上传。 
其值为 4,没有文件被上传。 
其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。 
其值为 7,文件写入失败。PHP 5.1.0 引进。 

 
 
 
<form action="accept.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="submit" value="提交"/>
</form>
 
<?
 
if(move_uploaded_file($_FILES['filename']['tmp_name'],'./uploader/' . $_FILES['filename']['name'])){
echo '上传成功';
 
}
 
?>
 
2.文件上传分目录存放
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件上传分目录存放</title>
</head>
<body>
<form action="accept.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="submit" value="提交"/>
</form>
</body>
</html>
 
 
<?
/*
接收文件,文件上传分目录存放,生成随机文件名
1.根据时间戳,并按一定规则创建目录
2.获取文件后缀名
3.判断文件大小
*/
 
//用于计算并创建目录
function mk_dir(){
$dir = date('Ym/d/i',time());//获取当前的时间戳,按Ym/d/i创建
if(is_dir('./' . $dir)){//判断目录是否存在.
  return $dir;
}
else{
      mkdir('./' . $dir,0777,true);
return $dir;
}
}
 
//获取文件名后缀
function getExt($file){
$tmp = explode('.' ,$file);//以点分隔文件名
return end($tmp); //返回最后一个单元
}
 
//生成随机文件名
function randName(){
$str = 'abcdefghijkmnpqrstuvwxyz123456789;';
return substr(str_shuffle($str),0,6); //随机打乱字符串,然后截取前六位,得到
    
}
 
if($_FILES['filename']['error'] !=0){
echo '上传失败';
exit();
}
//如果没有失败,处理上传过程
$filename = $_FILES['filename'];  
$path = './' . mk_dir() .'/' . randName(). getExt($filename['name']);   //拼接文件,生成路径. mk_dir目录,randName随机的文件名字,getExt文件后缀名    
//移动
if(move_uploaded_file($filename['tmp_name'],$path)){
echo '上传成功';
}
else{
    echo '失败';
}