文件上传与下载
文件上传
php.ini设置
<?php
header('Content-type:text/html;charset=utf-8');
var_dump($_FILES);
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>上传页面</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" />
<input type="submit" name="submit" value="开始上传" />
</form>
</body>
</html>
上传文件后显示文件的基本信息
$_FILES的属性
is_uploaded_file
函数作用为判断是否为HTTP post上传,返回类型为布尔值
move_uploaded_file
因为文件存在缓存目录只有一瞬,故要保存下来只有把他移动到其他目录保存
基本代码实现
<?php
header('Content-type:text/html;charset=utf-8');
if(isset($_POST['submit'])){
if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
$arr=pathinfo($_FILES['myfile']['name']);
$newName=date('YmdGis').rand(1000,9999);
if(move_uploaded_file($_FILES['myfile']['tmp_name'],"uploads/{$newName}.{$arr['extension']}")){
echo '恭喜你!上传成功!';
}else{
echo '对不起移动文件失败!';
}
}else{
exit('可能有攻击,请你做合法的事情!');
}
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>上传页面</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" />
<input type="submit" name="submit" value="开始上传" />
</form>
</body>
</html>
文件下载
基本流程
finfo_open
FILEINFO_MIME_TYPE 参数返回文件 mime 类型
finfo_file
参数为文件句柄,返回文件的信息
基本代码实现
<?php
if(!function_exists('finfo_open')){
header('Content-type:text/html;charset=utf-8');
exit('请先开启PHP扩展:fileinfo!');
}
$file='a.rar';
$fileinfo=finfo_open(FILEINFO_MIME_TYPE);
$mimeType=finfo_file($fileinfo,$file);
finfo_close($fileinfo);
//发送指定的文件MIME类型的头信息
header('Content-type:'.$mimeType);
//指定下载文件的描述
header('Content-Disposition:attachment;filename='.basename($file));
//指定文件的大小
header('Content-Length:'.filesize($file));
//读取文件内容至输出缓冲区,返回这个文件
readfile($file);