Upload de arquivos e deploy da aplicação: onde salvo os arquivos?

Olá pessoal,

Nunca fiz um upload de arquivos em uma aplicação web, mas agora preciso e estou com uma dúvida…

Se minha aplicação tiver um recurso para o usuário fazer upload de imagens e eu tiver feito o deploy da aplicação em um arquivo .war, onde eu salvo esses arquivos? Não gostaria de ser obrigado a salvar tudo no banco, porque na hora de exibir as imagens com certeza isso vai ficar um pouco lento…

Supondo que minha aplicação esteja na pasta webapps do Tomcat, em um arquivo blabla.war, e existam outras aplicações compartilhando este diretório, como eu poderia fazer para salvar estes arquivos, já que dentro do war não consigo escrever e se eu salvar fora (se é que posso) todas as demais aplicações poderão acessar essa minha pasta?!

Obrigado!

Cara, isto é independente do teu deploy.

Se tu quiser setar o path direto do seu diretório pode faze-lo.

Por exemplo:
C:/arquivos/
ou
/var/arquivos/

Sua aplicação não é dependete do diretório do tomcat dentro do servidor.
O que deves cuidar é apenas as permissões para esta escrita.

Até…

[quote=nbluis]Cara, isto é independente do teu deploy.

Se tu quiser setar o path direto do seu diretório pode faze-lo.

Por exemplo:
C:/arquivos/
ou
/var/arquivos/

Sua aplicação não é dependete do diretório do tomcat dentro do servidor.
O que deves cuidar é apenas as permissões para esta escrita.

Até…[/quote]

Cara, disso eu sei, mas o problema é que essa aplicação vai ficar no servidor do serviço de hospedagem que eu contratar, e duvido muito que eles me dêem permissão de escrita em qualquer lugar fora do tomcat…

cassio, pelo menos por aqui, quando faço deploy de aplicações web na forma de ‘.war’, percebo que o tomcat dá ‘unpack’ nesse ‘.war’ e cria as pastas de aplicação para mim, logo, acho que se você salvar algo dentro do diretório de aplicação você vai conseguir acessar depois sem problemas.

Você não precisa escrever dentro do ‘.war’

Tomara que te ajude.

Inté.

[quote=KWill]cassio, pelo menos por aqui, quando faço deploy de aplicações web na forma de ‘.war’, percebo que o tomcat dá ‘unpack’ nesse ‘.war’ e cria as pastas de aplicação para mim, logo, acho que se você salvar algo dentro do diretório de aplicação você vai conseguir acessar depois sem problemas.

Você não precisa escrever dentro do ‘.war’

Tomara que te ajude.

Inté.[/quote]

Se isso funcionar dessa maneira que você está falando vai me ajudar bastante… Uma vez feito o deploy e o Tomcat realizado o unpack do .war, ele continua descompactado “pra sempre” ?

[quote=cassio][quote=KWill]cassio, pelo menos por aqui, quando faço deploy de aplicações web na forma de ‘.war’, percebo que o tomcat dá ‘unpack’ nesse ‘.war’ e cria as pastas de aplicação para mim, logo, acho que se você salvar algo dentro do diretório de aplicação você vai conseguir acessar depois sem problemas.

Você não precisa escrever dentro do ‘.war’

Tomara que te ajude.

Inté.[/quote]

Se isso funcionar dessa maneira que você está falando vai me ajudar bastante… Uma vez feito o deploy e o Tomcat realizado o unpack do .war, ele continua descompactado “pra sempre” ?[/quote]

Pela experiência que tenho, percebi que o comportamento padrão é o tomcat deixar a pasta descompactada lá até alguém apagar a pasta descompactada para obrigar o ‘unpack’ do ‘.war’ novamente, seguindo POG-pattern FÓRCEPS. Mas acho que deve haver maneiras de configurar isso direito.

Inté.

Se vc controlar os arquivos no diretorio da aplicação vc passara por um problema imagine se vc implementar uma nova funcionalidade e subira a nova versão para servidor consequentemente vc fara um undeploy da aplicação e deploy , o diretorio dos arquivos vai "para vinagre " prq raelizar undeploy o tomCat apaga tudo!

O certo é vc realizar o upload em um diretorio independente da aplicação tipo:


C:\Temp\Upload

[quote=ramilani12]Se vc controlar os arquivos no diretorio da aplicação vc passara por um problema imagine se vc implementar uma nova funcionalidade e subira a nova versão para servidor consequentemente vc fara um undeploy da aplicação e deploy , o diretorio dos arquivos vai "para vinagre " prq raelizar undeploy o tomCat apaga tudo!

O certo é vc realizar o upload em um diretorio independente da aplicação tipo:

[code]

C:\Temp\Upload
[/code][/quote]

Mas será que o pessoal da hospedagem permite que eu escreva em algum lugar fora do diretório da aplicação?
Bom, vou entrar em contato para ver isso certinho…

Obrigado!

pessoal nao entendi essa idea direito…deixa eu explicar minha situação… tenho uma aplicação com vraptor…eu estou consegindo fzer upload das fotos para uma pasta chamara “C:\Java\apache-tomcat-5.5.17\arthur” como eu acesso a imagem dessa pasta via ‘http’ ?? eu nao teria que colocar essa imagem no webapps do TOMCAT !!!

Cássio, resolvi este problema para um outro colega, dê uma olhada no post http://www.guj.com.br/posts/list/15/59919.java#315139

[]'s

PS.: Detalhe, resolvi utilizando o vRaptor mas a classe que grava o arquivo propriamente dita é a mesma - UploadFile.java que encabeça o post, logo não terá problemas em adaptar o código para suas necessidades.