php上传文件和下载文件,PHP文件的上传与下载

一、文件上传的html与PHP注意事项

1.form要设定enctype属性,method设置为post。enctype设置为multipart/form-data后,图片上传信息会被列入$_FILES超全局数组,而非$_POST,从而达到真正的上传目的

2.设定隐藏input:表示最大上传空间

3.PHP配置文件的设置:

6093dd313ff6998d81d897c50f824ebc.png

二、单个文件上传

1.复制或移动上传文件:move_uploaded_file()

bool move_uploaded_file ( string $filename , string $destination )

2.判断错误

bec67991ec2aa7db8b3f1b09739b58c8.png

3.判断类型,通过扩展名数组来判断

4.判断大小

5.设置上传文件的随机文件名(安全性)

input{

display: block;

}

name:

/*echo "

";

print_r($_POST);

print_r($_FILES);

echo "

";*/

if($_FILES['pic']['error']>0){

switch($_FILES['pic']['error']){

case 1:

echo"图片大小超过upload_max_filesize
";

break;

case 2:

echo"图片大小超过隐藏表单的MAX_FILE_SIZE
";

break;

case 3:

echo"文件只被部分上传
";

break;

case 4:

echo"没有上传文件
";

break;

case 6:

echo"找不到临时文件夹
";

break;

case 7:

echo"写入文件失败
";

break;

default:

echo "发生未知错误
";

}

}

$extArr=explode('.',$_FILES['pic']['name']);

$ext=array_pop($extArr);

$arr=array('jpg','jpeg','png');

if(!in_array($ext,$arr)){

echo "上传类型不符
";

exit;

}

$maxSize=100000;

if($_FILES['pic']['size']>$maxSize){

echo "文件超过规定大小
";

exit;

}

Date_default_timezone_set('PRC');

$proPath=$_FILES['pic']['tmp_name'];

$newPath='./'.date('ymdhis').rand(100,999).'.'.$ext;

if(move_uploaded_file($proPath,$newPath)){

echo "上传成功
";

}else{

echo "上传失败
";

}

?>

二、多个文件上传

1.将上传按钮的name属性变为索引数组,以方便遍历

2.在上述单个文件实例外层套一个循环即可

echo "

";

print_r($_POST);

print_r($_FILES);

echo "

";

$num=count($_FILES['pic']['name']);

for($i=0;$i

//判断错误

if($_FILES['pic']['error'][$i]>0){

switch($_FILES['pic']['error']){

case 1:

echo"图片大小超过upload_max_filesize
";

break;

case 2:

echo"图片大小超过隐藏表单的MAX_FILE_SIZE
";

break;

case 3:

echo"文件只被部分上传
";

break;

case 4:

echo"没有上传文件
";

break;

case 6:

echo"找不到临时文件夹
";

break;

case 7:

echo"写入文件失败
";

break;

default:

echo "发生未知错误
";

}

continue;

}

//判断类型

$extArr=explode('.',$_FILES['pic']['name'][$i]);

$ext=array_pop($extArr);

$arr=array('jpg','jpeg','png');

if(!in_array($ext,$arr)){

echo "上传类型不符
";

continue;

}

//判断大小

$maxSize=1000000;

if($_FILES['pic']['size'][$i]>$maxSize){

echo "文件超过规定大小
";

continue;

}

//设置随机文件名进行上传操作

Date_default_timezone_set('PRC');

$proPath=$_FILES['pic']['tmp_name'][$i];

$newPath='./'.date('ymdhis').rand(100,999).'.'.$ext;

if(move_uploaded_file($proPath,$newPath)){

echo "上传{$_FILES['pic']['name'][$i]}成功
";

}else{

echo "上传失败
";

}

}

?>

三、文件上传类

1.参考细说PHP文件上传类,进行使用

四、文件下载

1.a标签href属性设置为下载地址

2.http头信息改为附件

$filename='view.html';

header("Content-Type:text/html");

header("Content-Disposition:attachment;filename:{$filename}");

header("Content-Length:".filesize($filename));

readfile($filename);

?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值