Установка имени файла внутри заголовка с помощью htaccess - PullRequest
0 голосов
/ 16 февраля 2012

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

Когда я использую стандартный PHP download.php?id=downloadID, я могу установить заголовки без проблем.

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

вот то, что у меня есть:

<FilesMatch "\.(?i:pdf)$">
    Header set Content-Type: application/octet-stream
    Header set Content-Disposition: "attachment; filename=FILE_NAME.pdf"
</FilesMatch>

И я понятия не имею, как динамически выделить имя файла в заголовок с помощью htaccess. Я гуглил, что искал, но решения пока нет.

Есть предложения?

1 Ответ

1 голос
/ 17 февраля 2012

Понятия не имею, работает ли он, но это будет моя первая попытка.

RewriteRule [^/]+\.pdf$ - [E=FILENAME:$0]
<FilesMatch "\.(?i:pdf)$">
    Header set Content-Type application/octet-stream
    Header set Content-Disposition "attachment; filename=%{FILENAME}e" 
</FilesMatch>

EDIT Кажется, что некоторые установки Apache устанавливают префикс переменной env с REDIRECT_

RewriteRule [^/]+\.pdf$ - [E=FILENAME:$0]
Header set Content-Type application/octet-stream env=REDIRECT_FILENAME
Header set Content-Disposition "attachment; filename=%{REDIRECT_FILENAME}e" env=REDIRECT_FILENAME

Выше код не работает из коробки.В моем случае мне понадобился другой внутренний редирект.

Но зачем вам указывать имя файла в заголовке, если URL-адрес запроса также содержит имя файла?Все браузеры сохранят файл под именем в URL.Таким образом, переход на /path/test.pdf приведет к тому, что браузеры предложат имя файла test.pdf.

...