caixa de download de arquivo - php
-
08-07-2019 - |
Pergunta
Eu estou dando um usuário um link para baixar um arquivo CSV ... apenas usando
Click <a href="report.csv">here</a> to download your file.
Este texto eo link está sendo exibido em uma janela pop-up pequena -. Altura 100 Largura 400
Se o usuário clicar em "Salvar" - então não há problema, em seguida, o arquivo é salvo para onde quer que escolham
Se apesar de escolha "abrir" o arquivo CSV é então exibida na janela pop-up pequena. Que isn;. T que eu quero - eu prefiro o Excel para abrir e exibir o arquivo em Excel, ou até mesmo desabilitar o botão "Abrir" pode ser uma opção possível
Alguma idéia de como eu posso conseguir tanto?
Obrigado,
Solução
Eu suponho que você está abrindo essa caixa de pop-up usando algum javascript .. então eu sugiro para não mostrar / abrir sua pequena caixa de pop-up "download" e, em vez mostrar este link em uma página web. Então, quando cliques alguém na ligação forçar o navegador para baixar o arquivo e se deseja abri-lo eles podem e, provavelmente, ter uma visão que é tão larga quanto de tamanho das janelas do browswer.
// apenas para exemplo, para forçar o download de um arquivo zip, enviar os cabeçalhos como
// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
Outras dicas
Você não tem nenhum poder sobre as configurações dos usuários, como que tipo de arquivo é aberto por qual aplicativo. Eles teriam que ir para as configurações e alterar a associação de arquivo. No entanto, tenha em mente que nem todos tem Excel instalado, por isso não é uma boa idéia para forçar o usuário a abrir o arquivo CSV nesta aplicação particular.
Eu também não acho que você pode desativar a opção Open, esta é também ditada pela configuração do navegador da Web se ele vai ou não vai exibir a janela ou vai lançar o aplicativo associado diretamente etc ... parece que você' está fora de sorte no seu caso particular.
Eu acredito que este é OS-nível e não pode ser alterado.
Uma meia-solução é a adição de target="_blank"
ao tag. Dessa forma, quando os usuários selecionam a opção 'open', pelo menos, o arquivo será aberto em uma nova (tela inteira, ou pelo menos redimensionável) janela.
Além disso, você não pode mudar o comportamento da janela, como ceejayoz afirmou.
- Certifique-se de que você não faça qualquer outra saída antes deste ponto
- construir sua seqüência CSV e armazená-lo em $ csvString
- Dê-lhe o nome de arquivo apropriado $ csv_filename
-
Os cabeçalhos devem dizer ao navegador para carregá-lo no Excel
header("Cache-Control: maxage=1");
header("Pragma: public");
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=$csv_filename");
echo $csvString;