Disposição de conteúdo é uma extensão do protocolo MIME, que instrui o agente usuário MIME a exibir arquivos anexados. Quando o Internet Explorer recebe o cabeçalho, ele ativa a caixa de diálogo para download de arquivo, e sua caixa de nome de arquivo é automaticamente preenchida com o nome especificado no cabeçalho. (Note que isso é causado pelo design; Você não pode usar esse recurso para salvar um documento no computador do usuário sem perguntar onde salvá-lo. )
Quando o servidor envia um arquivo para o navegador cliente, se for um tipo de arquivo suportado pelo navegador, ele geralmente será aberto por padrão usando o navegador, como txt, jpg, etc., que será exibido diretamente no navegador; se o usuário precisar ser solicitado a salvar, é necessário usar o Content-Disposition para processá-lo, a chave é adicionar anexo:
Response.AppendHeader("Disposição de Conteúdo","anexo; filename=FileName.txt");
Nota: Isso vai pedir para você salvar ou abrir, e mesmo que você escolha abrir, ele será aberto com o programa associado, como o Notepad, em vez de usar o IE para abrir diretamente.
Disposição de Conteúdo é fornecer um nome padrão de arquivo quando o usuário deseja salvar o conteúdo solicitado como um arquivo. As definições específicas são as seguintes:
disposição de conteúdo = "Disposição de Conteúdo" ":"
tipo de disposição *( ";" disposição-parm )
tipo de disposição = "anexo" | disp-extension-token
disposição-parm = nome do arquivo-parm | disp-extension-parm
filename-parm = "filename" "= cadeia-aspas
disp-extension-token = token
disp-extension-parm = token "=" ( token | cadeia-aspas )
Então podemos ver exemplos específicos do que foi dito acima:
Cache-Control:private
Content-Disposition:attachment; filename=Index1.png
Content-Length:328462
Content-Type:image/png
Date:Fri, 14 Oct 2016 01:08:04 GMT
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:5.2
X-Powered-By:ASP.NET
Content-Disposition: attachment; filename=“filename.xls”
Claro, o parâmetro do nome do arquivo pode conter informações de caminho, mas o User-Agnet ignora essa informação e usa apenas a última parte da informação do caminho como nome do arquivo. Se você usar esse cabeçalho no tipo de resposta/octeto-stream, significa que não quer exibir o conteúdo diretamente, mas uma janela de diálogo "download de arquivo" vai aparecer, e então cabe a você decidir se "abrir" ou "salvar".
Anotações:
1. Ao usar o Content-Disposition no código para garantir que o navegador abra o diálogo de download. response.addHeader("Disposição de Conteúdo","anexo"); Certifique-se de que você não fez nada para desativar o cache do navegador. Conforme segue:
response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0);
|