PHP скрипт для принудительной загрузки не работает - PullRequest
0 голосов
/ 01 июня 2011

У меня был простой маленький php-код, который позволял пользователям загружать видео с моего сайта, а не воспроизводить его в браузере

<?php

$path = $_GET['path'];
header('Content-Disposition: attachment; filename=' . basename($path));
readfile($path);

?>

Поскольку я переместил свой сайт на новый сервер, кажется,быть проблема с разрешением, когда я получаю 403 Forbidden "У вас нет прав доступа к /download-stream.php на этом сервере."

php-файл установлен вте же разрешения, что и раньше (644).Я не уверен, почему он делает это сейчас.

Ответы [ 2 ]

1 голос
/ 01 июня 2011

Обычно я использую что-то подобное для принудительной загрузки. Не забудьте изменить тип MIME, если вы меняете тип загружаемого файла.

        $attachment_location = $_SERVER["DOCUMENT_ROOT"] . "/file.zip";
        if (file_exists($attachment_location)) {

            header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
            header("Cache-Control: public"); // needed for i.e.
            header("Content-Type: application/zip");
            header("Content-Transfer-Encoding: Binary");
            header("Content-Length:".filesize($attachment_location));
            header("Content-Disposition: attachment; filename=file.zip");
            readfile($attachment_location);
            die();        
        } else {
            die("Error: File not found.");
        } 
0 голосов
/ 01 июня 2011

Попробуйте что-то вроде этого:

<?php
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$path\"\n");
$fp=fopen("$path", "r");
fpassthru($fp);

?>

...