Ir para conteúdo

POWERED BY:

Jefferson andre

Como monitorar os arquivos novos de uma pasta

Recommended Posts

Saudações, como eu faço para monitorar o conteúdo de novos arquivos criados em uma determinada pasta?

 

Motivo: quando se envia um arquivo para a Sefaz ela retorna alguns arquivos sendo o primeiro o mais importante pois o seu conteúdo informa o nome do próximo é assim por diante.

Agradeço a ajuda e por sugestões

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é isso que procura, mas veja: filesystemiterator

No entanto ao meu entender deviria ter uma regra nos envios de forma a registrar tudo que é enviado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, Omar~ disse:

Não sei se é isso que procura, mas veja: filesystemiterator

No entanto ao meu entender deviria ter uma regra nos envios de forma a registrar tudo que é enviado.

Grato pela ajuda, no envio existe regra mas no retorno preciso aguardar o que surge na pasta.

 

Eu ate poderia pegar uma sequência de ir checando mas ao emitir vários envios ao mesmo tempo isso pode embaralhar, entao prefiro pegar o que é novo na pasta e olhar se o retorno é sobre aquele arquivo de remessa.

 

Obrigado pela dica

Compartilhar este post


Link para o post
Compartilhar em outros sites

Geralmente esses arquivo vem de um retorno chamado de remessa e retorno, alguns arquivos são o mesmo nome quando vem ao seu servidor, se utiliza o CURL para conectar-se ao servidor, então, recomendo a utilização de uma biblioteca para CURL a guzzlehttp. 

 

Recomendo também criar sua estrura de recebimento com um padrão ano/mes/dia/* arquivos

Sempre recebendo os arquivos enviando de outro servidor em um diretório base. 

 

EX: SEFAZ\ano\mes\dia\arquivos......

 

e você faz um insert no banco de dados com o caminho para recuperação de forma mais eficiente, caso contrário, poderia fazer uma listagem na pasta gerando uma estrutura organizada para você.

 

SEFAZ\

SEFAZ\ANO

SEFAZ\ANO\MES

SEFAZ\ANO\MES\DIAS

 

Sempre será esse padrão.

 

Comandos para base de conhecimento:

 DirectoryIterator

<?php

$it = new DirectoryIterator(__DIR__);
foreach ($it as $fileinfo) {
  if (!$fileinfo->isDot())
    var_dump($fileinfo->getFilename());
}

 

Examplo FilesystemIterator:

<?php

$it = new FilesystemIterator(__DIR__);
foreach ($it as $fileinfo) {
  echo $fileinfo->getFilename() . "\n";
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 02/03/2020 at 21:11, paulinhosupriano disse:

Geralmente esses arquivo vem de um retorno chamado de remessa e retorno, alguns arquivos são o mesmo nome quando vem ao seu servidor, se utiliza o CURL para conectar-se ao servidor, então, recomendo a utilização de uma biblioteca para CURL a guzzlehttp. 

 

Recomendo também criar sua estrura de recebimento com um padrão ano/mes/dia/* arquivos

Sempre recebendo os arquivos enviando de outro servidor em um diretório base. 

 

EX: SEFAZ\ano\mes\dia\arquivos......

 

e você faz um insert no banco de dados com o caminho para recuperação de forma mais eficiente, caso contrário, poderia fazer uma listagem na pasta gerando uma estrutura organizada para você.

 

SEFAZ\

SEFAZ\ANO

SEFAZ\ANO\MES

SEFAZ\ANO\MES\DIAS

 

Sempre será esse padrão.

 

Comandos para base de conhecimento:

 DirectoryIterator


<?php

$it = new DirectoryIterator(__DIR__);
foreach ($it as $fileinfo) {
  if (!$fileinfo->isDot())
    var_dump($fileinfo->getFilename());
}


 

Examplo FilesystemIterator:


<?php

$it = new FilesystemIterator(__DIR__);
foreach ($it as $fileinfo) {
  echo $fileinfo->getFilename() . "\n";
}

 

Obrigado vou olhar este seu script

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Hacker_Buiu
      Neste tutorial que criei você vai aprender a tirar arquivos desnecessários do Windows sem usar programa:
       
      1)Digite Executar na barra de espaço do Windows 10>Depois digite "prefetch" sem as aspas duplas,exclua todos os arquivos de dentro dessa pasta selecionando-os com Control+a.Se aparecer mensagem,assinale todos para a frase "Selecione tudo isso para todos os arquivos atuais" alguma coisa assim,delete/exclua tudo,se pedir para ignorar clique no botão ignorar todos.
      2)Digite Executar de novo>Agora digite "temp" sem as aspas duplas,de novo selecione tudo apertando no teclado control+a.Delete Tudo.Faça o mesmo processo do que o primeiro.
      3)Digite novamente Executar, só que agora,digite "%temp%" sem as aspas duplas,de novo selecione tudo apertando no teclado control+a,Delete tudo ignorando os arquivos,se tiver em algum desses 3 o arquivo vulkan ou nvidia não delete são os únicos primordiais para funcionar a placa de vídeo.Se deletou dá para restaurar na lixeira,por fim esvazie a lixeira para que o Windows fique mais leve.
    • Por juninhogpe
      Boa tarde.
      Estou com problemas ao subir arquivos no formato MP3 com o código abaixo. Sempre usei ele e hoje apenas aparece erro.
      Abaixo o código:
       
      $titulo = $_POST['titulo']; if ($titulo != ""){ $texto = $_POST['texto']; $padre = $_POST['padre']; $data = date("Y-m-d", strtotime($_POST['data'])); $audio = isset($_FILES["audio"]) ? $_FILES["audio"] : FALSE; $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE; if($arquivo && $audio){ if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $arquivo["type"])){ echo utf8_encode("<script> alert ('Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Cadastro não foi realizado.');</script>"); } if(!preg_match("/^audio\/(mp3|MP3)$/", $audio["type"])){ echo utf8_encode("<script> alert ('Arquivo em formato inválido! erro no upload do audio. Cadastro não foi realizado.');</script>"); } else{ preg_match ("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext); $dd = date("msdYiH"); $imagem_nome = $dd. "." . $ext[1]; $imagem_dir = "../am/" . $imagem_nome; $up = move_uploaded_file($arquivo["tmp_name"], $imagem_dir); preg_match ("/\.(mp3|MP3|wav|wma){1}$/i", $audio["name"], $ext); $dd = date("msdYiH"); $audio_nome = $dd. "." . $ext[1]; $audio_dir = "../am/" . $audio_nome; $up_audio = move_uploaded_file($audio["tmp_name"], $audio_dir); if ($up){ $sql = utf8_decode("INSERT INTO palavra (titulo, foto, data, audio, texto, padre) VALUES ('$titulo','$imagem_nome', '$data','$audio_nome', '$texto', '$padre')"); } } }else echo utf8_encode("<script> alert ('Erro no upload.');</script>"); if($conn->query($sql) === TRUE){ echo utf8_encode("<script> alert (\"Cadastro realizado com sucesso.\");</script>"); echo utf8_encode('<script>window.location="palavra.php";</script>'); } else{ echo "Erro: " . $sql . "<br />" .$conn->error; echo utf8_encode('<script>window.location="palavra.php";</script>'); } }  
      O que estou fazendo de errado?
      Obrigado.
    • Por pandinha_000
      Olá,
      Estou desenvolvendo um código em c++ utilizando manipulação de arquivos .txt (não por ponteiros), e gostaria de saber como fazer para que o algoritmo "pule" a primeira linha em branco do meu arquivo e passe já para a próxima, com dados válidos (na leitura). A propósito, existe a possibilidade de, ao escrever no arquivo, essa primeira linha em branco não exista?
      Desde já agradeço.
    • Por Alex Dias
      Olá amigo, não sou usuário avançado, conseguir um código-fonte que lista arquivos de uma pasta no servidor, esses fontes listavam apenas os arquivos, daí eu dei uma incrementada nele para além dos arquivos ele listar também o tamanho do arquivo e a data da última modificação, segue ANEXO como ele está exibindo os resultados com perfeição.

      A minha dificuldade é que ele lista os arquivos da pasta por ordem alfabética de A a Z e eu gostaria muito que essa lista de arquivos fosse exibida por ordem de data de modificação decrescente, da mais atual para a mais antiga, e não estou conseguindo realizar essa tarefa, gostaria muito da ajuda dos amigos para solucionar esse ocorrido, desde já agradeço a ajuda de todos.

      Segue o código-fonte

       
      <?php //$diretorio = "D:\SERVIDOR-APACHE\PATRIMONIO TECNOLOGIA\images"; $diretorio = "/home/patrimonio/www/sites/default/files/ftpdata/download/Acesso Remoto"; //USADO PARA LISTAR OS ARQUIVOS DA PASTA $url = "sites/default/files/ftpdata/download/Acesso Remoto/"; // USADO PARA FAZER O LINK DE DOWNLOAD // abre o diretório $ponteiro = opendir($diretorio); // monta os vetores com os itens encontrados na pasta while ($nome_itens = readdir($ponteiro)) { $itens[] = $nome_itens; } // ordena o vetor de itens sort($itens); // percorre o vetor para fazer a separacao entre arquivos e pastas foreach ($itens as $listar) { // retira "./" e "../" para que retorne apenas pastas e arquivos if ($listar!="." && $listar!=".."){ // checa se o tipo de arquivo encontrado é uma pasta if (is_dir($listar)) { // caso VERDADEIRO adiciona o item à variável de pastas $pastas[]=$listar; } else{ // caso FALSO adiciona o item à variável de arquivos $arquivos[]=$listar; } } } // lista as pastas se houverem if ($pastas != "" ) { foreach($pastas as $listar){ print "";} } // lista os arquivos se houverem if ($arquivos != "") { foreach($arquivos as $listar){ //CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB $tamanho = filesize("$url/$listar"); $kb = "1024"; $mb = "1048576"; $gb = "1073741824"; $tb = "1099511627776"; if($tamanho<$kb){ $tamanho_resposta = ($tamanho." bytes"); }else if($tamanho>=$kb&&$tamanho<$mb){ $kilo = number_format($tamanho/$kb,2); $tamanho_resposta = ($kilo." KB"); }else if($tamanho>=$mb&&$tamanho<$gb){ $mega = number_format($tamanho/$mb,2); $tamanho_resposta = ($mega." MB"); }else if($tamanho>=$gb&&$tamanho<$tb){ $giga = number_format($tamanho/$gb,2); $tamanho_resposta = ($giga." GB"); } // FIM CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB // DATA DA ULTIMA MODIFICACAO $modificado = date("d/m/Y H:i:s", filemtime("$url/$listar"))."<br>"; // FIM DATA DA ULTIMA MODIFICACAO //echo"$modificado"; // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO echo" <tr> <td width='438' height='30' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;<a href='$url/$listar' target='_blank'>$listar</a></font></p></td> <td width='192' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$tamanho_resposta</font></p></td> <td width='340' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$modificado</font></p></td> <td width='202' bgcolor='#ffffff'><p align='center'><a href='$url/$listar' target='_blank'><img src='images/nuvem.jpg'/></a></p></td> </tr> "; } } else { echo "<p><font color='#ff0000' size='3'>Não há nenhum arquivo.</font><p><br>"; } echo"</table>" ?>  

    • Por lucasvilela01
      Olá a todos. Preciso de algum direcionamento sobre um aplicativo similar a uma rede social (é uma rede social), um projeto da equipe que eu trabalho. Preciso fazer o envio de fotos e vídeos para um servidor de arquivos (por exemplo, um Apache da vida) e atualmente estou usando somente Node JS e Express nesse projeto.
       
      Meus companheiros (desenvolvedores Android e iOS) enviam no momento as imagens como Base64 codificado e o banco MongoDB recebe e traz essa informação para eles. Na última reunião com os donos do projeto, nos notificaram a necessidade do envio de vídeos também.
       
       Sabendo que Base64 demora para ser decodificado e pesa muito nas queries, como posso fazer o envio de arquivos para servidores, sem passar necessariamente por HTML (como todos os tutoriais que eu vi na internet mostram)?
       
        Tem jeito? Agradeço desde já! <3 
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.