Salvar Arquivos PDF no Banco de Dados!

965 views
Skip to first unread message

IsaacGuerra

unread,
Jan 27, 2007, 2:58:47 PM1/27/07
to rails-br
Estou em um projeto onde estamos digitalizando processos em papel,
trandformando em PDF e disponibilizando via internet!
O problema é: Eu preciso garantir que somente o dono do documento
tenha acesso ao mesmo!
Bem em rails upload nao é problema entao eu fiz tudo certinho via
upload, so que eu coloco o arquivo em uma pasta e o nome do arquivo no
banco. So que a pasta onde esta ficando os documentos tem que ser
publica e qualquer um pode acessar os arquivos!
Entao eu pensei que a maneira certa seria colocar o arquivo no banco.
Porem ainda nao achei nenhuma documentaçao que me ajude a fazer isso!

Qualquer ajuda eu agradeço!
Obrigado

Isaac Guerra

Arthur Henrique Zapparoli

unread,
Jan 29, 2007, 6:28:02 AM1/29/07
to rail...@googlegroups.com
Tente o plugin acts_as_attachment, a opção padrão dele é salvar na Banco.


--
[]'s
Arthur Zapparoli

Davis

unread,
Jan 29, 2007, 6:39:17 AM1/29/07
to rail...@googlegroups.com
Em Seg, 2007-01-29 às 09:28 -0200, Arthur Henrique Zapparoli escreveu:
> Tente o plugin acts_as_attachment, a op��o padr�o dele � salvar na Banco.

O file_column também tem um recurso assim né?
Eu uso para imagens, mas acho que deve funcionar para outros tipos de
documentos.


--
Davis <daviscabr...@gmail.com>
Impact Media

Isaac Guerra

unread,
Jan 29, 2007, 1:27:27 PM1/29/07
to rail...@googlegroups.com
Amigo Arthur!
Muito obrigado pela dica!
O plugin realmente resolveu meu problema! consegui guardar meus
documentos no banco de dados sem nenhum problema aparente!
Bem, ainda nao pude estudar todas as possibilidades do plugin!
C voce puder me ajudar!
Ainda nao consegui, disponibilizar o arquivo pra download!
o aquivo ta no banco, mais quando eu busco a propriedade
"@documentos.attachment_data", ele busca no banco a informaçao, so que
em vez de abrir o programa de download ele simplesmente mostra o binario
na tela!
C vc souber como transformar o binario do banco em arquivo pra
disponibilizar para download eu agradeço!
Eu sei que nao tem problema de fazer download do binario diretamente do
banco, mais eu queria saber como habilitar o programa de download para
ser aberto no cliente!

---------
Isaac Guerra


2007/1/29, Arthur Henrique Zapparoli <arth...@gmail.com>:
Tente o plugin acts_as_attachment, a op��o padr�o dele � salvar na Banco.


On 1/27/07, IsaacGuerra <guerra...@gmail.com> wrote:
>
> Estou em um projeto onde estamos digitalizando processos em papel,
> trandformando em PDF e disponibilizando via internet!
> O problema �: Eu preciso garantir que somente o dono do documento
> tenha acesso ao mesmo!
> Bem em rails upload nao � problema entao eu fiz tudo certinho via
> upload, so que eu coloco o arquivo em uma pasta e o nome do arquivo no
> banco. So que a pasta onde esta ficando os documentos tem que ser
> publica e qualquer um pode acessar os arquivos!
> Entao eu pensei que a maneira certa seria colocar o arquivo no banco.
> Porem ainda nao achei nenhuma documenta�ao que me ajude a fazer isso!
>
> Qualquer ajuda eu agrade�o!

> Obrigado
>
> Isaac Guerra
>
>
> >
>


--
[]'s
Arthur Zapparoli






--
---------------------------------------
Isaac Guerra

Isaac Guerra

unread,
Jan 29, 2007, 3:48:56 PM1/29/07
to rail...@googlegroups.com
Amigo Davis!
Nao consegui nenhuma documentaçao que me ajudasse a colocar os arquivos no banco usando o plugin file_column!
Se vc puder me ajudar colocando a configuraçao propicia o file_column ser colocado no banco eu agradeço!

Isaac Guerra

2007/1/29, Davis <daviscabr...@gmail.com>:



--
---------------------------------------
Isaac Guerra

Phillip Calçado

unread,
Jan 29, 2007, 3:59:20 PM1/29/07
to rail...@googlegroups.com
Olá,

Que tal manter os arquivos em disco e ter um controller que leia os
streams e passe para o cliente autenticado?

Acredito que arquivos no banco de dados não fazem muito sentido se
você não pretende fazer nenhuma consulta com eles utilizandor ecursos
mais exóticos do banco. Você não ganhará nada além de mais inchaço nas
tabelas e mais tráfego de ponta a ponta no sistema.

[]s

On 1/29/07, Isaac Guerra <guerra...@gmail.com> wrote:
> Amigo Davis!
> Nao consegui nenhuma documentaçao que me ajudasse a colocar os arquivos no
> banco usando o plugin file_column!
> Se vc puder me ajudar colocando a configuraçao propicia o file_column ser
> colocado no banco eu agradeço!
> >


--
Phillip Calçado
http://www.fragmental.com.br
Crux Sacra Sit Mihi Lux

Isaac Guerra

unread,
Jan 29, 2007, 4:07:05 PM1/29/07
to rail...@googlegroups.com
Olá!
Com certeza seria ideal eu deixar os arquivos em disco!
Porem eu nao tenho nem ideia de como guardar os arquivos de maneira segura, nem tao pouco sei como programar o controler para gerar os streams! hehe, desculpa, mais ainda nao tenho tanta desenvoltura em ruby assim!
C vc puder me ajudar a criar o controler eu agradeceria! muito mesmo!

Obrigado
Isaac Guerra

2007/1/29, Phillip Calçado <pcal...@gmail.com >:



--
---------------------------------------
Isaac Guerra

Marcos Tapajos

unread,
Jan 29, 2007, 6:08:04 PM1/29/07
to rail...@googlegroups.com
Isaac, facilmente você pode pegar todos os arquivos de uma determinada
pasta do seu filesystem usando o trecho abaixo:

list = []
Finder.find("diretorio") do |filename|
list << filename
end

Depois a parte de download você diretamente no html.

Um abraço

Isaac Guerra wrote:
> Olá!
> Com certeza seria ideal eu deixar os arquivos em disco!
> Porem eu nao tenho nem ideia de como guardar os arquivos de maneira
> segura, nem tao pouco sei como programar o controler para gerar os
> streams! hehe, desculpa, mais ainda nao tenho tanta desenvoltura em
> ruby assim!
> C vc puder me ajudar a criar o controler eu agradeceria! muito mesmo!
>
> Obrigado
> Isaac Guerra
>
> 2007/1/29, Phillip Calçado <pcal...@gmail.com

> <mailto:pcal...@gmail.com>>:


>
>
> Olá,
>
> Que tal manter os arquivos em disco e ter um controller que leia os
> streams e passe para o cliente autenticado?
>
> Acredito que arquivos no banco de dados não fazem muito sentido se
> você não pretende fazer nenhuma consulta com eles utilizandor ecursos
> mais exóticos do banco. Você não ganhará nada além de mais inchaço
> nas
> tabelas e mais tráfego de ponta a ponta no sistema.
>
> []s
>
> On 1/29/07, Isaac Guerra <guerra...@gmail.com

Isaac Guerra

unread,
Jan 29, 2007, 7:32:12 PM1/29/07
to rail...@googlegroups.com
Caro Marcos!
Mais o problema é esse!
Eu facilmente posso buscar o nome dos arquivos na pasta! porem essa pasta tem que estar publica! para que possam fazer download dela! Pode acontecer que alguem acesse os arquivos que nao e dele! por meio da url! Meu problema é que os arquivos sao sigilosos e eu nao posso deixar que o dono do arquivo tenha acesso ao mesmo!
Eu pensei que poderia guardar os arquivos em uma pasta privada, depois ler esse arquivo e mandar so o binarios pro cliente! ou ate mudar o arquivo de uma pasta privada para uma pasta publica quando o cliente pedir, depois retira-lo novamente! bem eu nao sei como proceder com eficiencia! eu queria alguma soluçao que me ajuda-se! que fosse rapida e segura!
Eu acredito que gravar o arquivo no banco eu consiga isso! so que me parece uma soluçao um tanto pesada!

Bem Marco se puder me ajudar eu agradeço!

Isaac Guerra!

2007/1/29, Marcos Tapajos < tap...@gmail.com>:

Davis

unread,
Jan 30, 2007, 5:22:59 AM1/30/07
to rail...@googlegroups.com
Em Seg, 2007-01-29 às 21:32 -0300, Isaac Guerra escreveu:
> Caro Marcos!
> Mais o problema é esse!
> Eu facilmente posso buscar o nome dos arquivos na pasta! porem essa
> pasta tem que estar publica! para que possam fazer download dela!

Cria um controller que lê esse arquivo e joga pro usuario final.
Nesse controller tu faz todas verificações necessárias.

Ele lê o mime do arquivo, pega os cabecalhos, reproduz e dá um output do
conteudo. Acho que resolve.

Em PHP eu fazia usando o passthru(). No Rails/Ruby deve ter algo
semelhante, vou ler na API.


Isaac Guerra

unread,
Jan 30, 2007, 10:19:31 AM1/30/07
to rail...@googlegroups.com
Pessoal!
Antes de tudo Obrigado pela ajuda!

Voces conseguiram resolver meu problema!

Eu coloquei a soluçao no forum do rubyonrails, deem uma olhada!

http://forum.rubyonbr.org/forums/1/topics/742?page=1#posts-4065

---------
Isaac Guerra

2007/1/30, Davis <daviscabr...@gmail.com >:



--
---------------------------------------
Isaac Guerra
Reply all
Reply to author
Forward
0 new messages