Ссылка на скачивание скрыта

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

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

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

5 ответов

Решение

wooohoooo

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

Я вставил это выше в header.php include ob_start ();

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

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

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

$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() должна быть вызвана перед отправкой любого фактического вывода (echo), иначе она выдаст эту ошибку.

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

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

Расположение содержимого в порядке, но другое решение будет использовать 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);

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

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

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

Другие вопросы по тегам