ссылка на скачивание php в rar

Я создаю веб-сайт на своем локальном хосте, который должен позволить людям загружать некоторые файлы .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 байт, а не полная длина, которая составляет около 200 МБ.

Как я могу решить эту проблему?


person Community    schedule 21.06.2015    source источник
comment
что произойдет, если вы хотите скачать файл? вы все еще получаете неполный файл размером 200 байт?   -  person Siim Kallari    schedule 21.06.2015
comment
Нет, это скачать rar файл размером 200 байт или что-то в этом роде   -  person    schedule 21.06.2015
comment
Откройте файл в текстовом редакторе и посмотрите, действительно ли это текст с сообщениями об ошибках.   -  person Ben Wainwright    schedule 21.06.2015
comment
Он говорит, что разрешенный размер памяти 134217728 байт исчерпан (пытался выделить 175652864 байта), так как я могу выделить более 13... байт?   -  person    schedule 21.06.2015
comment
Что бы вы ни делали, не устанавливайте ini_set('memory_limit', '-1'); в качестве быстрого решения, пока кто-нибудь не предложит это сделать.   -  person Drakes    schedule 21.06.2015
comment
Это работает, большое спасибо, я думаю, что это устанавливает предел загружаемой памяти как неограниченный, верно?   -  person    schedule 21.06.2015


Ответы (1)


Удалите оператор echo, перед заголовками не должно быть никакого вывода. Замените readfile($filename) на readfile($file).

person user2182349    schedule 21.06.2015
comment
Это также может быть проблема с разрешениями. Проверьте журналы. - person user2182349; 21.06.2015
comment
Что в скачанном файле - это сообщение об ошибке? - person user2182349; 21.06.2015
comment
Нет, он загружает rar, но если я вижу папку, она имеет размер 200 байт или что-то около этого значения в байтах. - person ; 21.06.2015