【问题标题】:php download link to rarrar的php下载链接
【发布时间】:2015-09-06 23:31:22
【问题描述】:

我正在我的本地主机上创建一个网站,应该可以让人们下载一些 .rar 文件。

在我的索引中,我创建了一些这样的标签:

$filename = "Test001.rar";
<a href="download.php?file='.$filename.'">'.$filename.'</a>';

这只是单个文件的示例,但是在我的 php 文件“download.php”中,当我想下载 .rar 文件时遇到了问题

这是下载.php

<?php
echo "Welcome to Knowledge!";

if (isset($_GET['file']) && basename($_GET['file']) == $_GET['file'])
{
    $file = $_GET["file"];
    $path = 'C:\xampp\htdocs\TestSite'."\\".$file;
}

$err = $path.'Sorry, the file you are requesting doesnt exist.';

if (file_exists($path) && is_readable($path))
{
    //get the file size and send the http headers
    $size = filesize($path);


    header('Content-Type: application/x-rar-compressed, application/octet-stream');
    header('Content-Length: '.$size);
    header('Content-Disposition: attachment; filename='.$file);
    header('Content-Transfer-Encoding: binary');

    readfile($filename);
}
?>

它以正确的方式打开流,但我知道文件大小约为 200 字节,而不是大约 200MB 的全长。

我该如何解决这个问题?

【问题讨论】:

  • 如果你想下载文件会发生什么?你还有 200 字节的不完整文件吗?
  • 不,它会下载一个 200 字节大小的 rar 文件,或者类似的东西
  • 在文本编辑器中打开文件,看看它是否真的是带有错误信息的文本
  • 它说“允许的内存大小为 134217728 字节已用尽(试图分配 175652864 字节)”,那么我怎样才能分配超过 13... 字节?
  • 无论你做什么,都不要不要在有人建议之前将ini_set('memory_limit', '-1');设置为快速修复。

标签: php file download rar


【解决方案1】:

去掉echo语句,headers前不应该有任何输出。将 readfile($filename) 更改为 readfile($file)

【讨论】:

  • 也可能是权限问题。检查日志。
  • 下载的文件中有什么 - 是错误信息吗?
  • 不,它会下载 rar,但如果我看到该文件夹​​,它的尺寸为 200 字节或接近该字节值
猜你喜欢
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 2016-08-01
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多