1001Ferramentas
📄Dev

Content-Disposition Filename

Extrai o filename do header Content-Disposition (suporta filename* RFC 5987).

Filename

Qual nome de arquivo o navegador vai usar

Quando um download salva com nome estranho — cheio de sinais de porcentagem, ou virando "download" sem extensão — a causa quase sempre está no cabeçalho Content-Disposition. Ele carrega o nome sugerido em dois formatos que convivem: o filename tradicional, limitado a ASCII, e o filename* da RFC 5987, que declara a codificação e permite acento, cirílico ou kanji.

Cole o cabeçalho inteiro e a página mostra qual nome será usado. Quando existe filename*, ele tem prioridade — é essa a regra dos navegadores — e o valor aparece já decodificado, então "relat%C3%B3rio.pdf" volta a ser "relatório.pdf". Quando só existe o filename simples, é ele que aparece, com as aspas removidas.

A recomendação prática é mandar os dois: o filename com uma versão sem acento, para clientes antigos, e o filename*=UTF-8''… com o nome real. Vale conferir também o que vai antes do nome: attachment força o download, enquanto inline pede que o navegador exiba o conteúdo quando souber como. E nome de arquivo vindo de entrada do usuário precisa ser tratado — barra, aspas e quebra de linha no cabeçalho são vetor de ataque conhecido.

Perguntas frequentes

Por que o nome do meu arquivo veio com %C3%A9?
Porque o valor foi percent-encoded mas entregue no filename comum, que não tem como declarar codificação — então o cliente lê os caracteres literalmente. A forma correta é filename*=UTF-8''nome%20com%20acento.pdf, que diz explicitamente que aquilo é UTF-8 percent-encoded.
O que significam as duas aspas simples no filename*?
O formato é charset'idioma'valor. O campo do meio é opcional e quase sempre fica vazio, o que produz aquele UTF-8'' com as duas aspas juntas. Não é erro de digitação: é o campo de idioma em branco.
A página lê cabeçalho quebrado em várias linhas?
Não. A RFC 2231 permite dividir um parâmetro longo em filename*0, filename*1 e assim por diante, e esses casos não são remontados aqui — na prática, servidores modernos não usam essa forma para nome de arquivo, e os navegadores atuais também não a esperam.

Ferramentas Relacionadas