ссылка для скачивания скрыта

Я работаю над системой магазинов, и у меня есть следующая ссылка http://cmstutorials.org/shop/downloads/2793156879 (исходная ссылка – cmstutorials. Org / shop / downloads.php? Download = 2793156879)

то, что я пытаюсь сделать, это позволить пользователю загрузить элемент, который совпадает с идентификатором 2793156879 с указанием фактической ссылки на файл. Как у них есть на themeforest.net

как бы я это сделал?

    Этот пример должен помочь вам:

    $len = filesize($filename); header("Content-type: image/jpeg"); header("Content-Length: $len"); header("Content-Disposition: inline; filename=\"$new_filename\""); readfile($filename); 

    или другой, выглядит мне проще:

     <?php header('Content-type: image/jpeg'); $f = file_get_contents('path/to/image.jpg'); print $f; ?> 

    PS, конечно, ваш content-type должен соответствовать вашему файлу.

    header () должен быть вызван до того, как будет отправлен любой фактический вывод ( эхо ), иначе он выкинет эту ошибку.

    См. «Пример 2»: http://www.w3schools.com/php/func_http_header.asp

    wooohoooo

    спасибо много парней, это правила сайта, я всегда получаю правильный ответ: D

    Я вставил это выше header.php, включая ob_start ();

    и непосредственно перед функциями заголовка ob_ get_clean ();

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

    Если вы когда-нибудь попытаетесь масштабировать эту услугу, я предлагаю взглянуть на perlbal. Один из аккуратных трюков, который он делает, – это то, что ваше приложение может отправлять специальный заголовок, который говорит perlbal, чтобы обслуживать статический файл на каком-то другом сервере. Таким образом, вам не нужно связывать поток PHP с нажатием битов до клиента.

    Content Disposition – это нормально, но другое решение будет использовать PATH_INFO и получить файл таким образом:

     http://example.com/download.php/2793156879.zip 

    Ваш download.php будет как

     // handle path_info $filename=$_SERVER['PATH_INFO']; // gets "/2793156879.zip" as $filename // do smtg w/ $filename... // ... // download $len = filesize($filename); header("Content-type: application/force-download"); header("Content-Length: $len"); readfile($filename); 

    Примечание: application / force-download не существует, это просто заставить загружать файлы с каждым браузером. (некоторые MSIE, похоже, имели проблемы с приложением / октетом-потоком)

    Такой подход имеет преимущество в работе со всеми браузерами: даже с очень старыми, не поддерживая заголовок Content-Disposition:.

    У него есть небольшой недостаток: вы должны подставить () код продукта непосредственно из строки PATH_INFO