Forçar o PNG a baixar em vez de abrir no navegador com o IIS

1

Eu preciso ter um subdiretório de imagens para que todos os PNGs sejam baixados em vez de serem abertos na janela do navegador. Estou usando o IIS para o servidor da Web.

Existe uma maneira de forçar o download de um PNG?

    
por RedWolves 24.06.2009 / 21:29

7 respostas

0

Todas as soluções que tentei fazem com que ele seja baixado em outros navegadores, exceto no IE. IE está tentando ser "útil" e decide o que acha que seria melhor servidor do cliente, neste caso, é exibir o arquivo PNG no navegador.

Há sempre a maneira programática de fazer isso, como foi apontado. Mas eu não estava procurando seguir esse caminho.

No final, fechei individualmente os 67 arquivos PNG e os vinculei. Não é bonito, mas funciona.

Obrigado a todos pela ajuda.

    
por 25.06.2009 / 15:07
1

O que você precisa fazer é obter um cabeçalho de disposição de conteúdo na resposta HTTP para informá-lo sobre o tratamento imagem como um arquivo para download, como este:

Content-disposition: attachment; filename="someimage.png"

Eu tenho medo de não saber exatamente como você conseguiria isso no IIS.

Na sua situação, se o IIS não fornecesse uma maneira de trabalhar com o cabeçalho, provavelmente executaria as solicitações por meio de um script que enviaria os dados da imagem com o cabeçalho necessário.

    
por 24.06.2009 / 21:44
1

Você pode ativar a navegação no diretório (guia Diretório em propriedades) e adicionar o seguinte cabeçalho nesse diretório (guia Cabeçalhos HTTP)

Custom Header Name: Content-disposition
Custom Header Value: attachment

Isto terá o infeliz efeito de fazer o primeiro hit na pasta que normalmente exibiria a lista de imagens pop-up na caixa de diálogo Open / Save (você pode simplesmente abrir) e então cada imagem também receberá o mesmo tratamento. / p>

Nota: isso é realmente melhor gerenciado por meio de uma página index.asp | aspx | jsp | php | qualquer que sirva a imagem e defina os cabeçalhos apropriadamente - mas, ei, você solicitou uma solução IIS.

    
por 24.06.2009 / 22:37
0

A única maneira que eu sei de fazer isso é tentar confundir o navegador em pensar que o arquivo de imagem de retorno não é uma imagem e, assim, forçar um download. Você poderia fazer isso usando alguma programação do lado do servidor para ofuscar efetivamente o cabeçalho do tipo de conteúdo do arquivo png enviado para o navegador, isso deve fazer o que você deseja.

    
por 24.06.2009 / 21:39
0

Remova o tipo de MIM .PNG - Instruções aqui para o IIS 7

    
por 24.06.2009 / 21:43
0

A regra geral é que, se o navegador obtiver um tipo de conteúdo, ele não terá um manipulador para abrir a caixa de diálogo 'salvar como'.

Se você estivesse usando o Apache, eu sugeriria colocar um arquivo .htaccess apenas nessa pasta e apenas anulá-lo para arquivos png apenas nesse diretório.

Ou seja. algo assim:

AddType application/bin png

Para o IIS eu não sei onde você pode configurar isso sem quebrar todos os arquivos PNG.

Uma possível solução é instalar um Apache em um sistema (talvez o mesmo sistema que o IIS) e deixar o IIS fazer proxy dos pedidos para esta pasta de imagens para o Apache e usar o truque com o htaccess para forçar o download deles.

    
por 24.06.2009 / 23:18
-1

Uma maneira fácil seria envolver o arquivo PNG em um arquivo PHP. Você poderia então usar a reescrita de URL para pegar arquivos * .png e traduzi-los para o arquivo PHP (por exemplo, downloadpng.php? File = image.png):

<?php

header ('Content-disposition: attachment; filename="'.$_GET['file'].'"')
include ($_GET['file']);

?>

Meu PHP é excepcionalmente enferrujado, mas algo nesse sentido seria suficiente. Talvez seja melhor perguntar no Stack Overflow para obter a sintaxe correta.

Se você não sabe o que é reescrever o URL, há muitos lugares em que você pode pesquisar no Google para descobrir o que ele faz, mas em poucas palavras ele pega um URL do navegador e o reinterpreta para outra coisa antes de chegar IIS, para que o usuário veja uma URL, mas o IIS veja outra (que é como você pode forçar os arquivos .png a passar por um script PHP).

    
por 24.06.2009 / 23:38

Tags