Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

teste de verificação da existência de arquivo PDF

Boa Tarde Pessoal, tenho a seguinte situação:

HTML

<p>Selecione o mês:</p> 
<select size="1" id="mes" name="mes">
    <option value="01">Janeiro</option>
    <option value="02">Fevereiro</option>
    <option value="03">Março</option>
    <option value="04">Abril</option>
    <option value="05">Maio</option>
    <option value="06">Junho</option>
    <option value="07">Julho</option>
    <option value="08">Agosto</option>
    <option value="09">Setembro</option>
    <option value="10">Outubro</option>
    <option value="11">Novembro</option>
    <option value="12">Dezembro</option>
</select>
<p>Selecione o ano :</p>
<select size="1" id="ano" name="ano">
    <option value="2018">2018</option>
    <option value="2017">2017</option>
    <option value="2016">2016</option>
</select>
<button type="button" onclick="javascript:montarArquivo('form1');">Gerar PDF</button>

JAVASCRIPT

function montarArquivo(formulario) {
    window.open(document.getElementById('mes').value + document.getElementById('ano').value + '.pdf', 'janela1', 'width=800, height=600, scrollbars=1, resizable=yes');
         }

no diretório já deixo todos os arquivos correspondentes (012018.pdf / 022018.pdf ............)

O Problema está na seguinte situação, vamos dizer que no mês de Maio em diante eu não gerei nenhum arquivo, teria como eu fazer um teste de verificação se existe esse arquivo no diretorio e me trazer um alert("arquivo não disponível"); .

ou

quando a pagina der o erro 404 que não pode ser carregada me trazer o alert.

ou

Alguma outra solução =)

porque ate o momento a unica solução que encontrei, seria retirar do select a combinação que não existe o arquivo. e a ideia a principio seria renomear os arquivos com mes e ano . pdf e transferir via ftp para o diretório e não precisar mais alterar o código da pagina

Antes de finalizar queria deixar aqui meu agradecimento a Alura, pois fiz poucos cursos e já consegui fazer muito com que aprendi.

Obrigado a todos.

4 respostas

O próprio comando window.openretorna um valor nulo caso a chamada de errado. Você pode salvar o retorno dele em uma variável e fazer uma verificação por nulo dentro da função montarArquivo

solução!

Boa tarde, João! Como vai?

Verificar a existência do arquivo que está sendo solicitado é atribuição do back-end e não do front-end. Portanto, para ter um fluxo correto na aplicação, o seu back-end deveria retornar um status de acordo dependendo se o arquivo solicitado existe ou não.

Pegou a ideia?

Gabriel Leite, depois de uma noite de sono imaginei que nao seria possivel por esse fato mesmo.

Mas seguindo a ideia do Ricardo, eu não consegui fazer.

a ideia seria isso?

function montarArquivo(formulario) {
var arquivo;
arquivo = window.open(document.getElementById('mes').value + document.getElementById('ano').value + '.pdf', 'janela1', 'width=800, height=600, scrollbars=1, resizable=yes');
    if (arquivo!= "null"){
        modal();
    }else{
        window.open(arquivo);
    }
}

bom , testei porem ele me traz o modal e continua abrindo a pagina com erro

como poderia aplicar a sua ideia? Obrigado

Boa noite, João! Como vai?

A implementação do que eu falei vai depender da linguagem que é utilizada no back-end. Vc terá que buscar essa informação e procurar saber como é implementado esse tipo de coisa nela.

Daí, uma vez que a lógica tenha sido implementada no back-end, vc terá que fazer uma requisição AJAX pro back-end pedindo pelo arquivo. Se ele existir será retornado e daí é só abrir ele. Caso não exista, o back-end vai avisar que não existe e vc mostra uma msg informando sobre a inexistência.

Pegou a ideia?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software