2012-02-16 2 views
0

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

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

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

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

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

И я понятия не имею, как PARCE имя файла dynamicaly к коллектору с помощью Htaccess. Я искал его, но все равно не решил.

Любые предложения?

ответ

1

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

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 Кажется, некоторые апач устанавливает префикс переменной 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-адресе. Таким образом, goint to /path/test.pdf приведет к браузеру, предлагающему имя файла test.pdf.

+0

с фактическим результатом 'filename = FILE_NAME.pdf' является' FILE_NAME.pdf' и с 'filename =% {FILENAME} e' result is' null' –

+0

См. Вышеизложенное. – Gerben

+0

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

Смежные вопросы