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,

Foi útil?

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;

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top