ENVIAR ARQUIVOS SERVIDOR

ALTAIR148 13/05/2012 20:11:13
#401932
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
ALEVALE 13/05/2012 21:23:25
#401935
Resposta escolhida
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.
ALTAIR148 14/05/2012 00:26:11
#401938
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:

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;
ALEVALE 14/05/2012 08:27:38
#401943
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.
ALTAIR148 14/05/2012 08:36:01
#401946
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...
Tópico encerrado , respostas não são mais permitidas