7
respostas

Upload e Exibição do Arquivo

Olá! Eu consigo fazer o upload de uma foto, mas ela é guardada fora do projeto. Quando vou exibir, tenho que ficar referenciando o path do meu computador, ou seja, caso leve à outro pc, simplesmente não vai funcionar.

Como fazer para salvar os arquivos multipart na pasta do projeto do eclipse em "webapp/resources/images" por exemplo?

7 respostas

Se pode ir pelo navegador de arquivos do seu sistema operacional até a pasta e colocar o arquivo por lá, não precisa ser pelo Eclipse. Em geral fica dentro da pasta que você escolheu como workspace, algo como

/workspace/nome_do_projeto/src/webapp/resources/images

A funcionalidade que estou implementando é a de cadastrar-se e enviar uma foto para o perfil.

O Usuário não tem como armazenar o arquivo no meu Pc, ele deve fazer o upload por um formulário.

A minha dúvida é essa, como fazer o controller, ou o FileSaver, salvar na pasta que eu quero?

Ele só salva na pasta do TomCat.

Oi Sérgio, tudo bem?

Você pegar a pasta do seu projeto dinamicamente através do ServletContext, algo assim:

String realPath = request.getServletContext().getRealPath("/resources/images");

Aí você vai gravar o arquivo dentro do seu projeto.

Não funcionou, ele está salvando em

/opt/apache-tomcat-8.0.36/wtpwebapps/jornal/resources/images/

Quero que ele salve em:

/home/sergio/workspace/jornal/src/main/webapp/resources/images/

Como faço?

Novamente, eu preciso que ele salve nesta pasta, pois se eu levar o projeto para outra máquina ele não funcionará.

Oi Sergio, eu entendi :). Assim, ele está salvando no tomcat pq a sua aplicação, no momento que você pede para rodar, é exportada para o tomcat e executada de lá. Caso você salve realmente na sua pasta do projeto, vc não vai conseguir exibir ela de maneira fácil na aplicação, já que vai estar fora do servidor web.

Se esse for realmente seu desejo, simplesmente copie o endereço da sua pasta e coloque na sua aplicação. Caso queira uma solução um pouco melhor, da uma pesquisada sobre o S3 ninja, que emula a Amazon S3 para você.

Entendo. Já que a aplicação está salvando onde ela está rodando, como faço para saber o contexto na hora da execução?

Mais especificadamente, como recuperar essa imagem/arquivo?

Abraço!

Opa, se vc quer exibir por exemplo como o endereço de uma imagem na página, basta fazer assim:

<img src="/contexto/resources/images/nomeDaImagem"

Pq ela vai estar gravada num local acessível no servidor web.

Caso queira recuperar o arquivo dentro da aplicação, basta fazer um new File(request.getServletContext().getRealPath("/resources/images/nomeDaImagem"))