通过php force header代码下载大文件无效

时间:2017-03-30 13:55:53

标签: php .htaccess

这是我用来点击此下载按钮的表格。

<form action="verify.php" method="post" target="_blank">
<input name="filename" type="hidden" value="media.mp4">
<input name="filesize" type="hidden" value="2.0GB"><p></p>
<div align="center">
<input alt="Download" src="Download-Button.png" type="image" width="225"></div>
</form>

使用此

在verify.php内部
<?php $file = $_POST["filename"]; ?>
<!DOCTYPE html>
<html lang="en">
<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">

    <meta http-equiv="refresh" content="5; url=download.php?file=<?php echo $file; ?>">
    <title>Verify Page</title>
</head>
<body>

</body>
</html>

强制标题放在download.php

<?php
$file = 'uploads/' . $_GET['file'];

if( !file_exists($file) ) die("File not found");

header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header("Content-Length: " . filesize($file));
header('Content-type: video/mp4');

readfile($file);
?>

但是当涉及1GB或2GB以上的大文件时,它有时会产生500个内部错误,甚至有时文件少于500MB或更高,有时仍会产生以下错误:

无法访问此网站

  

网页   http://example.com/download.php?file=media.mp4   可能暂时停止或可能已永久移动到新的   网址。 ERR_INVALID_RESPONSE

我也增加了php.ini和Apache的内存限制。甚至尝试使用.htaccess来分配内存,但没有任何工作!请指导我该怎么办?或解决方案?

0 个答案:

没有答案