разрешить пользователю скачивать после отправки данных формы - PullRequest
1 голос
/ 06 мая 2011

Я должен разрешить пользователю загружать файлы после того, как он отправит свои данные ПОЛЬЗОВАТЕЛЯ.

Я создал три страницы,

  1. отобразит файлы, доступные для загрузки(catalogue_downloads.html)

  2. примет данные USER (form_collecting.php)

  3. примет пользовательские данные для проверки и отправит их на электронную почтуадрес и перенаправление на страницу загрузок (mail.php)

Схема выглядит так: catalogue_downloads.html-> form_collecting.php-> mail.php-> catalogue_downloads.html

Я могу перенаправить на catalogue_downloads, но как мне заставить пользователя загрузить файл, который он запрашивал через PHP

Спасибо

С уважением

Vinoth

Ответы [ 4 ]

0 голосов
/ 06 мая 2011

Вот предложение:

При перенаправлении из catalogue_downloads.html на form_collecting.php присвойте своему каталогу уникальный идентификатор и отправьте его в form_collecting.phpВ форме оставьте скрытое поле ввода, в котором будет сохранен ранее опубликованный идентификатор каталога.Когда форма будет опубликована и проверена, начните процесс mail.php.Если почта успешна, прочитайте идентификатор каталога и перенаправьте пользователя на catalogue_downloads.html.

Надеюсь, это вам поможет.Привет

0 голосов
/ 06 мая 2011

Вы не можете передать пользователю несколько файлов, поэтому, если вы не сжимаете их на стороне сервера в один архив, вы должны показать ему ссылки на файлы.

Однако вы не ограниченыссылка на фактический файл, вы можете сослаться на «страницу загрузчика», которая дает пользователю один файл при вызове, чтобы неавторизованные пользователи не могли получить доступ к файлам (см. ответ PENDO о том, как это сделать).

0 голосов
/ 06 мая 2011

Вы можете использовать код ниже, если это необходимо ..

    $root = $_SERVER['DOCUMENT_ROOT']; $site = ''; 
    $folder = "path where you want to store downloaded files";

    $fullPath = $root.$folder.'/'.$_REQUEST['filenm'];
//$_REQUEST['filenm'] = file name which you want to download.

    if ($fd = fopen ($fullPath, "r")) {
        $fsize = filesize($fullPath);


        $path_parts = pathinfo($fullPath);
        $ext = strtolower(html);    
        header("Content-type: application/".$ext);   
        header("Content-Transfer-Encoding: Binary");    
 header("Content-Disposition: attachment;filename=\"".$path_parts["basename"]."\"");
        header("Content-length: $fsize");
        header("Cache-control: private"); //use this to open files directly
        while(!feof($fd)) {
            $buffer = fread($fd, 2048);
            echo $buffer;
        } } fclose ($fd); exit;

Спасибо.

0 голосов
/ 06 мая 2011

http://php.net/manual/en/function.readfile.php прочитав первую часть (форсируя загрузку), вы можете прочитать файл и затем отправить его пользователю через заголовки.Таким образом, вам не нужно выдавать файловую структуру (и, возможно, даже исключать файл за пределами корневого каталога / public_html вашего сайта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...