两个步骤:1,通过header头信息告诉浏览器,我给你回应的是一个附件请接收
2,通过php读取下载的文件的内容并返回
前端
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a href="dowload.php">下载</a> </body> </html>
后端
<?php /** * Created by PhpStorm. * User: 小辛 * Date: 2019/1/24 * Time: 16:29 */ //文件名 $file_name = 'phpStudySetu1p.exe'; //文件路径 $full_path = 'img/'.$file_name ; //如果有该文件(找到了) if(file_exists($full_path)){ //文件大小 $filesize = filesize($full_path); //告诉浏览器,回应的是字节流 header("Content-Type:octet/stream"); //单位是字节 header("Accept-Range:bytes"); //内容长度多少 header("Content-Length:$filesize"); //告诉浏览器回应的文件名称是什么 header("Content-Disposition:attchment;filename=$file_name"); //读取文件 $file = fopen($full_path,'r'); //向客户端回送数据 $buffer=1024;// //判断文件是否读完 while (!feof($file)) { //将文件读入内存 $file_data=fread($file,$buffer); //每次向客户端回送1024个字节的数据 echo $file_data; } fclose($file); }else{ //返回相应的错误头消息,避免跳转 }