PHP - как поменять название скачиваемого файла автоматом

GN
На сайте с 22.06.2011
Offline
21
7792

Всем привет, столкнулся со следующей задачей:

1. Лежит файл на серваке с зафрированным именем, например

bhnj544vw.doc

2. Исходное название файла хранится в базе, например Цены.doc

Вопрос:

Как сделать так, чтобы при загрузке файла, сервак обращался к базе, брал оттуда реальное название файла, и предлагал пользователю сохранение файла уже с нормальным названием?

Помогите люди добрые, кто сталкивался

D
На сайте с 09.07.2009
Offline
79
#1

Это нужно реализовать по прямому доступу к файлу bhnj544vw.doc или же возможно использование доп. страницы(download.php?f=jgnjgnbg.doc), которая бы загрузила содержимое и отдала файл с правильным именем?

gormarket
На сайте с 29.12.2010
Offline
47
#2

Задание имени файла делается как-то через отдачу HTTP-заголовков, типа:

header('Content-Disposition: attachment; filename="'.$file_name.'"');

Попробуйте воспользоваться поиском СКАЧИВАНИЕ ФАЙЛОВ В PHP

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
[umka]
На сайте с 25.05.2008
Offline
456
#3

Это можно сделать, только если файл скачивается не напрямую, а отдаётся через скрипт.

<?

$filename="another_file_name.doc";

header("Content-Type: application/octet-stream");

header("Content-Disposition: attachment; filename=\"$filename\"");

readfile("jgnjgnbg.doc");

?>

но это весьма накладно по ресурсам.

Лог в помощь!
dma84
На сайте с 21.04.2009
Offline
168
#4
'[umka:
;9171038']Это можно сделать, только если файл скачивается не напрямую, а отдаётся через скрипт.

А ведь можно заголовки через .htaccess отдавать, правда с именами файлов траблы, динамически их в .htaccess не передать. Или можно?..

dma84 добавил 08.07.2011 в 19:24

'[umka:
;9171038']но это весьма накладно по ресурсам

Для больших файлов

[umka]
На сайте с 25.05.2008
Offline
456
#5
dma84:
А ведь можно заголовки через .htaccess отдавать, правда с именами файлов траблы, динамически их в .htaccess не передать. Или можно?..

Во-первых, динамически не передать, а во-вторых, даже если и передать, то апач при выдаче файла прилепит второй заголовок "Content-Type" и "Content-Disposition" :)

dma84:

Для больших файлов

Для любых. И для нескольких больших, и для кучи мелких.

Только если у вас таким образом скачивают пару файлов в день, то разница не будет так заметна, как если бы ежедневно было по 10000 скачиваний.

GN
На сайте с 22.06.2011
Offline
21
#6

товарищи, я немного решил переделать решение, потому что наверное изобретаю велосипед..

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

В общем на сайте есть клиентская зона, где клиенты авторизируются, вводя свой логин и пароль.

После авторизации клиенту доступна возможность загрузки файлов на сервер и выгрузки этих файлов с него. Для каждого клиента создается своя папка с названием, которое совпадает с его id по базе.

Как сделать так, чтобы эта папка была доступна только этому залогиненному клиенту, и чтобы другие пользователи не могли ее видеть, просматривать ее содержимое, скачивать оттуда файлы по прямой ссылке?

S
На сайте с 23.05.2004
Offline
315
#7

копайте в сторону anti leech скриптов, там фактически реализован этот вариант .

В кратце: все обращения перенаправляем на скрипт, который и решает, отдавать или нет.

Вопрос из серии "как поменять двигатель в автомобиле", где на двух пальцах не объяснишь.

Это просто подпись.
LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#8
Как сделать так, чтобы эта папка была доступна только этому залогиненному клиенту, и чтобы другие пользователи не могли ее видеть, просматривать ее содержимое, скачивать оттуда файлы по прямой ссылке?

Легко:

1. Изучить PHP самому

2. Нанять программиста

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
[Удален]
#9

Отдавать файлы через внутренний редирект. Копать в сторону X-Accel-Redirect заголовка для nginx. В кратце, отдачей файлов заведует скрипт, но он лишь делает или не делает внутренний редирект, таким образом отдача больших файлов медленным клиентам не влечёт значительной нагрузки (практически равно простому скачиванию без скрипта).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий