Verificar se Arquivo já existe!

493 views
Skip to first unread message

Lucivan Max

unread,
Oct 21, 2014, 1:59:08 PM10/21/14
to jque...@googlegroups.com
Estou enviando dados para o Banco e ao mesmo tempo um arquivo para determinado diretório no servidor, até ai tudo bem!
Mas preciso verificar se o arquivo (.jpg, .pgn, .mp4, etc) já existe no diretório e informar ao usuário a substituição do mesmo, estou usando Zend 1 pra tratamento do form, e uso zend validate para os campos e um loder progress com ajax para mostrar o processo do envio ao usuário.

Alguém pode me ajudar? 
Pode ser um tutorial ou adaptação ao meu código.

Agradeço desde já!

   <script>
    $().ready(function() {
      $("#file").validate(); 

    (function() {   
      var bar = $('.bar');
      var percent = $('.percent');
      var status = $('#status');       
    $('form').ajaxForm({
        beforeSend: function() {    
            status.empty();
            var percentVal = '0%';
            bar.width(percentVal);
            percent.html(percentVal);               
        },
        uploadProgress: function(event, position, total, percentComplete) {
            var percentVal = percentComplete + '%';
            bar.width(percentVal);
            percent.html(percentVal); 
        },
        success: function() {
            var percentVal = '100%';
            bar.width(percentVal);
            percent.html(percentVal);
        },
      complete: function() {     
        location.href = "newfile";
      }     
    }); 
    })();  
  });
    </script>

Marcos Campelo

unread,
Oct 21, 2014, 2:12:49 PM10/21/14
to jque...@googlegroups.com
Boa tarde,

Tenho essa função para imagem, veja se te ajuda.
function isImg(url) {
var img = new Image();
img.src = url;
return img.height != 0;
}

Att, Marcos Campelo


--
--
Grupo de jQuery Brasil.
 
REGRAS: https://docs.google.com/document/d/1VfvTDmeHTSj-L5ouZJjQQ4OkjTCU1Hr2XtPYBNGVHH4/edit
 
USE O JSBIN.COM / JSFIDDLE.NET PARA CÓDIGOS.
 
Email: jque...@googlegroups.com
Biba: jquery-br+...@googlegroups.com
Site: http://groups.google.com/group/jquery-br?hl=pt-BR

---
Você recebeu essa mensagem porque está inscrito no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jquery-br+...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Lucivan Max

unread,
Oct 21, 2014, 2:27:01 PM10/21/14
to jque...@googlegroups.com
Ps: desculpem por postar o código outra vez aqui , isso não acontecerá novamente! 


segue o link:

luxu

unread,
Oct 21, 2014, 7:04:33 PM10/21/14
to jque...@googlegroups.com
O que esse programa faz? só para ter um parâmetro....

Lucivan Max

unread,
Oct 22, 2014, 8:49:18 AM10/22/14
to jque...@googlegroups.com
Gerenciamento de arquivos.

Na verdade eu preciso consultar no banco se a arquivos selecionado jé existe ao seleciona-lo no "button file", antes de acionar o submit e avisar ao usuário que arquivo já está cadastrados.
Sou iniciante em .js agradeço quem puder ajudar.

Atenciosamente,

Lucivan Max Santos
Técnico em Análise e Desenvolvimento de Sistemas Web

Contatos
81-9172-5169
81-9539-6911
81-3136-1542


--
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/jquery-br/hev64ELvP8c/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para jquery-br+...@googlegroups.com.

Marcos Campelo

unread,
Oct 22, 2014, 9:16:00 AM10/22/14
to jque...@googlegroups.com
Bom dia,

A ideia então é simples, faz o upload do arquivo e no back você vai comparar o arquivo do banco com o arquivo do upload, se for igual retorna mensagem falando que o arquivo já existe no banco!
Esse comparação acredito eu que tenha que ser feita em cima do bytes do arquivo

luxu

unread,
Oct 22, 2014, 9:17:48 AM10/22/14
to jque...@googlegroups.com
Eu axo q será dificil controlar a não ser se o arquivo enviado seja do mesmo nome do que tem lá, ex.: digamos q eu tenha um arquivo chamado: acampamento.jpg lá e queira mandar o mesmo arquivo com nome diferente dai sé colocar: acampa.jpg que o sistema aceitará, sacou o problema?


Em terça-feira, 21 de outubro de 2014 15h59min08s UTC-2, Lucivan Max escreveu:

Marcos Campelo

unread,
Oct 22, 2014, 9:22:11 AM10/22/14
to jque...@googlegroups.com
Por isso a melhor comparação seria por byte do arquivo, ele pode alterar o nome, mas os byte vao ser os mesmo

Leonardo Rodrigues

unread,
Oct 22, 2014, 9:44:47 AM10/22/14
to jque...@googlegroups.com
bem complicado pois se existir muita demanda de upload certamente um dia vão querer upar algum arquivo com a mesma quantidade de bytes.

--
Você recebeu essa mensagem porque está inscrito no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jquery-br+...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.



--
Leonardo Rodrigues da Silva
WebDeveloper

<blog>http://www.leo.voudeargohost.net/</blog>
<about>http://about.me/leo07vasp</about>
<linkedin>http://www.linkedin.com/profile/view?id=104259451</ linkedin >
<facebook>http://www.facebook.com/leo07vasp</ facebook >
<twitter>http://www.twitter.com/leo07vasp</ twitter>

Marcos Campelo

unread,
Oct 22, 2014, 11:13:41 AM10/22/14
to jque...@googlegroups.com
Então,

A ideia não é comparar o tamanho do byte de um arquivo com o outro e sim o próprio byte.

Se você tiver  duas fotos idênticas e em uma você alterar um 1pixel, essa foto já é diferente da outra.

Ex java:

  1. public static boolean verificaDuplicidade(String file1, String file2) {  
  2.     File f1 = new File(file1);  
  3.     File f2 = new File(file2);  
  4.     byte[] f1_buf = new byte[1048576];  
  5.     byte[] f2_buf = new byte[1048576];  
  6.     int len;  
  7.     if (f1.length() == f2.length()) {  
  8.         try {  
  9.             InputStream isf1 = new FileInputStream(f1);  
  10.             InputStream isf2 = new FileInputStream(f2);  
  11.             try {  
  12.                 while (isf1.read(f1_buf) >= 0) {  
  13.                     len=isf2.read(f2_buf);  
  14.                     for (int j = 0; j < len; j++) {  
  15.                         if (f1_buf[j] != f2_buf[j]) {  
  16.                             return false// tamanho igual e conteudo diferente  
  17.                         }  
  18.                     }  
  19.                 }  
  20.             } catch (IOException e) {  
  21.             }  
  22.         } catch (FileNotFoundException e) {  
  23.         }  
  24.     } else {  
  25.         return false// tamanho e conteudo diferente  
  26.    }  
  27.     return true// arquivos iguais  
  28. }

Lucivan Max

unread,
Oct 22, 2014, 1:10:28 PM10/22/14
to jque...@googlegroups.com

O importante pra mim  na verdade é o nome do arquivo.
Pois além de salvar o nome no banco estou enviando o arquivo para o diretório.
É justamente pra evitar que seja enviado um arquivo com o mesmo nome e substitua o antigo, se o usuário mudar o nome do mesmo arquivo não vejo problema!

--
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/jquery-br/hev64ELvP8c/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para jquery-br+...@googlegroups.com.

Marcos Campelo

unread,
Oct 22, 2014, 3:13:33 PM10/22/14
to jque...@googlegroups.com
Então, você não vai querer fazer tratamento de duplicidade?

Se o user enviar 100 fotos iguais mais com nomes diferentes, não vai ter problema?

Att, Marcos Campelo


Você recebeu essa mensagem porque está inscrito no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jquery-br+...@googlegroups.com.

Lucivan Max

unread,
Oct 25, 2014, 8:18:19 AM10/25/14
to jque...@googlegroups.com

Exatamente!
Toda vez que um up acontecer, eu referencio o arquivo "upado" ao registro do BD, ele é visualizado normalmente pelo.sistema e quando for excluídon os dados  do BD o arquivo é excluído também!
Isso ja acontece e esta.funcionando perfeitamente, porem se eu subir dois arquivos com o mesmo nome, o mais novo substitui o antigo e quando for deletado um o outro registro nao encontrará arquivo nenhum .
Por isso preciso implementar um comparação e avisar ao user que ja existe arquivo com o mesmo nome e confirmação do up pra validar a ação.

Reply all
Reply to author
Forward
0 new messages