Como enviar cabeçalhos de Content-Disposition no apache para arquivos?

7

Eu tenho um diretório de arquivos de texto que eu estou servindo com o apache 2. Normalmente, quando eu (ou qualquer usuário) acessar os arquivos, eles os vêem em seu navegador. Eu quero 'forçar' * o navegador para abrir uma caixa de diálogo 'Salvar como'. Eu sei que isso é possível com os cabeçalhos Content-Disposition ( mais informações ).

Existe alguma maneira de ativar isso para cada arquivo?

Idealmente, gostaria de algo assim:

<Directory textfiles>
   AutoAddContentDispositionHeaders On
</Directory>

E, em seguida, o apache definiria o cabeçalho de disposição de conteúdo correto, inclusive usando o mesmo nome de arquivo.

Algo parecido com isso pode ser possível com a diretiva apache Header .

Pontos de bônus, se incluídos no apache no debian.

Eu poderia fazer um simples script PHP wrapper que recebesse um argumento filename , fizesse a chamada para header(...) e depois imprimisse o arquivo, mas eu teria que validar a entrada etc., é o que estou tentando evitar .

* Eu sei que você não pode realmente forçar as coisas quando se trata da web

    
por Rory 12.01.2010 / 17:12

2 respostas

10

Eu descobri que isso faz o que eu quero:

<Location /textfiles>
    SetEnvIf Request_URI "^.*/([^/]*)$" FILENAME=$1
    Header set "Content-disposition" "attachment; filename=%{FILENAME}e"
    UnsetEnv FILENAME
</Location>
    
por 12.01.2010 / 17:53
1

mod_headers deve ser o que você está procurando:

<IfModule mod_headers.c> 
  <Location ~ ".*/textfiles/.*"> 
    Header set Content-Disposition attachment
  </Location>
</IfModule>
    
por 12.01.2010 / 17:32