php文件上传与下载

文件上传

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);
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值