文件下载不了,只能连接到PHP页面

来源:2-11 文件下载函数封装

慕标3964534

2018-05-23 23:26:40

<?php

function down_file(string $filename,array $allowDownExt=array('jpeg','jpg','png','gif','txt','html','php','rar','zip','rar')){

if(!is_file($filename)||!is_readable($filename)){

    return false;

  }

  //检测文件类型是否允许下载

  $ext=strtolower(pathinfo($filename,PATHINFO_EXTENSION));

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

    return false;

  }

  //通过header()发送头信息

  //告诉浏览器输出的是字节流

  header('Content-Type:application/octet-stream');

  //告诉浏览器返回的文件大小是按照字节进行计算的

  header('Accept-Ranges: bytes');


  $filesize=filesize($filename);

  //告诉浏览器返回的文件大小

  header('Accept-Length: '.$filesize);


  //告诉浏览器文件作为附件处理,告诉浏览器最终下载完的文件名称

  header('Content-Disposition: attachment;filename=king_'.basename($filename));


$read_buffer=1024;

$sum_buffer=0;

$handle =fopen($filename,"rb");

while(!feof($handle) && $sum_buffer<filesize($filename)){

echo fread($filename,$read_buffer)

$sum_buffer+=$read_buffer;

}

fclose($filename);

exit;

}

<?php

  require_once 'file.func.php';

  $filename =$_GET['filename'];

  down_file($filename);


<!DOCTYPE html>

<html>

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <meta http-equiv="X-UA-Compatible" content="ie=edge">

  <title>测试下载</title>

</head>

<body>

  <a href="E:\PHPTutorial\WWW\zy.rar">下载1.zip</a>

  <br>

  <a href="downfile.php?filename=E:\PHPTutorial\WWW\zy.rar">下载zy.rar</a>

  <a href="downfile.php?filename=123.txt">下载123.txt</a>

  <a href="downfile.php?filename=99.txt">下载99.txt</a>

</body>

</html>




写回答

1回答

imooc_澈

2018-05-24

你好,小慕尝试了你的代码没有问题,如果文件路径正确的话是可以正常下载到的,建议检查你的文件路径是否正确。

http://img.mukewang.com/climg/5b061a7900015e6205920119.jpg

如果解决了你的问题,请采纳,祝学习愉快~


0

0 学习 · 2569 问题

查看课程