ENVIAR ARQUIVOS SERVIDOR
Boa noite,
Pessoal, estou com uma dúvida, me encontro na seguinte situação.
Tenho um sistema de ponto eletrônico, onde o funcionário faz a marcação no computador e ele gera um comprovante da marcação, e ao gerar esse comprovante ele será enviado para o e-mail cadastrado, até ai tudo bem.... O que detalhe é que as vezes pode ocorrer de não ter internet e não enviar o e-mail naquele momento, por isso criei uma rotina que grava o e-mail no bd para posterior envio, ao ser enviado ele é apagado para não ter informações desnecessárias, o problema é que o comprovante é gerado em PDF e nas estações, eu queria saber alguma forma de enviar o PDF para o servidor e ele ser enviado pelo servidor que já tem o monitor rodando, uma coisa que eu não queria é botar em pasta compartilhada, queria fazer uma comunicação direta entre a estação e o servidor, e após o servidor receber ai sim gravar em uma pasta que não seje compartilhada.
Tem como?
Obrigado
Pessoal, estou com uma dúvida, me encontro na seguinte situação.
Tenho um sistema de ponto eletrônico, onde o funcionário faz a marcação no computador e ele gera um comprovante da marcação, e ao gerar esse comprovante ele será enviado para o e-mail cadastrado, até ai tudo bem.... O que detalhe é que as vezes pode ocorrer de não ter internet e não enviar o e-mail naquele momento, por isso criei uma rotina que grava o e-mail no bd para posterior envio, ao ser enviado ele é apagado para não ter informações desnecessárias, o problema é que o comprovante é gerado em PDF e nas estações, eu queria saber alguma forma de enviar o PDF para o servidor e ele ser enviado pelo servidor que já tem o monitor rodando, uma coisa que eu não queria é botar em pasta compartilhada, queria fazer uma comunicação direta entre a estação e o servidor, e após o servidor receber ai sim gravar em uma pasta que não seje compartilhada.
Tem como?
Obrigado
Bom pra enviar diretamente do servidor o que daria pra você fazer é o procedimento contrário...
O servidor acessar a estação e copiar o arquivo para o servidor e excluir da estação dai ele enviaria pelo proprio servidor.
Ex 1:
Você tem uma listagem das máquinas que foi gerado o PDF e não enviado pois está salvo no BD correto, dai você pelo servidor cria uma rotina para acessar essas máquinas [Ô]\\MICRO01\C$\DIRETORIO\ARQUIVO.PDF[Ô] dai você copia o arquivo e APAGA ele do BD e da estação e envia pelo servidor.
EX 2:
Sei que vc não quer assim, mas se criar uma pasta C$ com o ($) ficará oculto para os usuários, e essa informação quem apenas saberá que existe é VOCÊ !
Se quiser podemos fazer um exemplo, mas acho que não precisar neh.
O servidor acessar a estação e copiar o arquivo para o servidor e excluir da estação dai ele enviaria pelo proprio servidor.
Ex 1:
Você tem uma listagem das máquinas que foi gerado o PDF e não enviado pois está salvo no BD correto, dai você pelo servidor cria uma rotina para acessar essas máquinas [Ô]\\MICRO01\C$\DIRETORIO\ARQUIVO.PDF[Ô] dai você copia o arquivo e APAGA ele do BD e da estação e envia pelo servidor.
EX 2:
Sei que vc não quer assim, mas se criar uma pasta C$ com o ($) ficará oculto para os usuários, e essa informação quem apenas saberá que existe é VOCÊ !
Se quiser podemos fazer um exemplo, mas acho que não precisar neh.
Não seria bem isso que preciso ALEVALE, até andei vendo uma forma de fazer essa transferência seria via SOCKET, mas não consegui nenhum artigo que explique sobre um e que funcione de verdade, uma outra possibilidade que pensei é a seguinte, eu sei que armazenar arquivos no banco faz com que ele cresça muito, mas como no meu caso é só apenas até o envio acho que seria o mais viável.
Andei vendo alguns códigos de como gravar o arquivo no banco, criei uma tabela com o campo do tipo logblob e eu consigo gravar o arquivo com o codigo abaixo:
Assim ele grava o arquivo, mas ao recuperar, o arquivo fica corrompido, eu testei com o seguinte código
Andei vendo alguns códigos de como gravar o arquivo no banco, criei uma tabela com o campo do tipo logblob e eu consigo gravar o arquivo com o codigo abaixo:
INSERT INTO teste (figura) VALUES (LOAD_FILE([Ô]C:/1.PDF[Ô]));
Assim ele grava o arquivo, mas ao recuperar, o arquivo fica corrompido, eu testei com o seguinte código
SELECT figura INTO OUTFILE [Ô]C:/40.JPG[Ô] FROM teste;
Altair não precisa disso.
Pensa assim, quando a rotina de enviar e-mails der erro você salva os dados no banco de dados, crie uma tabela de log para isso se não tiver.
Pelo que eu entedi a sua aplicação salva o arquivo local em cada estação correto ?
Você consegue fazer isso com a classe (System IO)
Exemplo:
A estação XXX funcionário (ALTAIR) deu erro não envio o arquivo correto, dai você salva o nome do arquivo e o nome da estação,ip e dados que você acha que é necessário.
Dai você cria uma rotina na aplicação que roda no servidor e varre a tabela com os computadores que não enviaram o arquivo, dai você consegue copiar pela classe (System IO).
Tabela de LOG:
Estação: Arquivo:
XXX1 1.PDF
XXX2 2.PDF
XXX3 3.PDF
Rotina:
[ô]COPIA O ARQUIVO DA ESTAÇÃO PARA O SERVIDOR
If IO.FileExists([Ô]\\XXX1\C$\Arquivos de Programas\PONTO\1.PDF1)=true
IO.FIleCopy([Ô]\\XXX1\C$\Arquivos de Programas\PONTO\1.PDF1,[Ô]\\SERVIDOR\C$\PONTO\BACKUP\[Ô])
Endif
Bom eu faria dessa forma, sem precisar usar socket.
Pensa assim, quando a rotina de enviar e-mails der erro você salva os dados no banco de dados, crie uma tabela de log para isso se não tiver.
Pelo que eu entedi a sua aplicação salva o arquivo local em cada estação correto ?
Você consegue fazer isso com a classe (System IO)
Exemplo:
A estação XXX funcionário (ALTAIR) deu erro não envio o arquivo correto, dai você salva o nome do arquivo e o nome da estação,ip e dados que você acha que é necessário.
Dai você cria uma rotina na aplicação que roda no servidor e varre a tabela com os computadores que não enviaram o arquivo, dai você consegue copiar pela classe (System IO).
Tabela de LOG:
Estação: Arquivo:
XXX1 1.PDF
XXX2 2.PDF
XXX3 3.PDF
Rotina:
[ô]COPIA O ARQUIVO DA ESTAÇÃO PARA O SERVIDOR
If IO.FileExists([Ô]\\XXX1\C$\Arquivos de Programas\PONTO\1.PDF1)=true
IO.FIleCopy([Ô]\\XXX1\C$\Arquivos de Programas\PONTO\1.PDF1,[Ô]\\SERVIDOR\C$\PONTO\BACKUP\[Ô])
Endif
Bom eu faria dessa forma, sem precisar usar socket.
Então, ALEVALE, agora pela manhã consegui anexar o arquivo no banco e depois recupera-ló, no servidor para que ele seje enviado, e posteriormente apago ele do banco para que o banco não cresça muito. Uma outra possibilidade também seria sim essa sua ideia, que parece me atender também. Mas de qualquer forma muito obrigado pela dica...
Abraços...
Abraços...
Tópico encerrado , respostas não são mais permitidas