SetEnvIf regex para configurar o cabeçalho HTTP Content-Disposition

3

Estou tentando usar a diretiva IHS 7.0 / apache 2.2 SetEnvIf para definir o nome do arquivo de um arquivo baixado com base em um parâmetro url. Eu acho que estou bem perto, no entanto, se houver um espaço (codificado ou não) no nome do arquivo - ele falhará.

URL de exemplo:

http://site.com/path/to/filename.ext/file-title=Nice File Name.ext?file-type=foo

configuração do apache:

SetEnvIf Request_URI "^.*file-title\=(.*)\??.*$" FILENAME=$1
Header unset "Content-Disposition"
Header add "Content-Disposition" "attachment; filename=%{FILENAME}e"
UnsetEnv FILENAME

Um aplicativo especificará o que está sendo exibido como "Nice File Title.ext" no exemplo. Isso tudo funciona muito bem se não houver espaços, no entanto - se houver um espaço, o nome do arquivo para download aparecerá como "Nice". Pode ou não haver um segundo conjunto de parâmetros na cadeia de consulta (tipo de arquivo, etc).

    
por Erik Sorensen 24.05.2010 / 23:51

1 resposta

0

ok - deixando o regex sozinho e mudando o cabeçalho adicione o truque.

filename=\"%{FILENAME}e\""

para incluí-lo entre aspas. suspiro.

    
por 26.05.2010 / 20:29