Local Imagem - Servidor Jboss

11 respostas
Andre.flu

Boa tarde,

Estou com a seguinte situação:

Minha aplicação “Portal” irá fazer upload de imagens e estas imagens serão utilizados por outros sistema “Portal B”, através de algum endereço web que terá acesso a esta imagem.
Porém não posso colocar esta imagem de upload dentro da minha aplicação, pois irei fazer novos deploy da aplicação “Portal” ao longo do tempo.

Portando quero saber onde salvar minhas imagens dentro do JBoss a fim de ter acesso a ela por meio de um endereço web, se ficar dentro da minha aplicação?

Fui claro?!

André Cunha

Obrigado.

11 Respostas

A

cara,

vc nao precisa criar a pasta dentro do jboss, vc pode criar uma pasta qualquer no seu servidor e salva-la. e depois vc consegue passar o stream dessa imagem para sua pagina web.

t+

B

Eu utilizo esse servlet para uploads de imagens…
apos realizar o upload pelo metodo doPost é soh chamar o doGet passando o nome da imagem…

Ex:
http://localhost:8080/MinhaAplicacao/GetImagensMail?nome_arquivo=imagem.jpg

public class GetImagensMail extends HttpServlet {
	
	private static final long serialVersionUID = 1L; 
    private static final String DESTINATION_DIR_PATH = "C:/pasta/";  
    private File destinationDir;  
       
	public void init(ServletConfig config) throws ServletException {  
        super.init(config);  
        destinationDir = new File(DESTINATION_DIR_PATH);  
        if (!destinationDir.isDirectory()) {  
            throw new ServletException(DESTINATION_DIR_PATH + " is not a directory");  
        }  
    } 
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		  String nome_arquivo = request.getParameter("nome_arquivo");
		  final  String caminho = DESTINATION_DIR_PATH+nome_arquivo;
		 
		  try {
		      File file = new File(caminho);
		     
		      if(!file.exists()){           
		        	System.err.println(" Não foi possivel encontrar o arquivo na url informada.");
		      }
		   
		         FileInputStream fis = new FileInputStream(file);
		         BufferedInputStream bis = new BufferedInputStream(fis);
		         byte[] bytes = new byte[bis.available()];
		         response.setContentType("image/jpg");
		         ServletOutputStream os = response.getOutputStream();
		         bis.read(bytes);
		         os.write(bytes);      
		      }
		  
	      catch(IOException e){
	          System.err.println(e.getMessage());
	      }
	      catch(Exception e){
	    	  System.err.println(e.getMessage());
	      }
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		Template template = new Template();
		
		PrintWriter out = response.getWriter();  
        response.setContentType("text/html");  
        
        DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();  
        fileItemFactory.setSizeThreshold(1 * 1024 * 1024); //1 MB  
        fileItemFactory.setRepository(tmpDir);  
        File file = null;
        String grupo = "";
  
        ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);  
        try {  
            List items = uploadHandler.parseRequest(request);  
            Iterator itr = items.iterator();  
            while (itr.hasNext()) {  
                FileItem item = (FileItem) itr.next();  
                if (item.isFormField()) {  
                	
                } else if(!item.isFormField()) { 
                    file = new File(destinationDir, item.getName());  
                    item.write(file);  
                    System.out.println("<br/>Arquivo gravado em: " + file.getPath());  
                }  
            }  
        } catch (FileUploadException ex) {  
            ex.printStackTrace();  
        } catch (Exception ex) {  
            ex.printStackTrace();  
        } 
	}

}
Andre.flu

Ambas as idéias funcionam bem, porém não queria ter que criar algo mais para processar a informação.
Bastaria ter um conteiner web com um local para salvar as imagens.

O que esta me faltando onde é este local dentro do Jboss.

A

entao cara,

acho meio dificil vc fazer isso que vc quer, pq o jboss quando ele descompacta o arquivo .war ou .ear ele salva os arquivos numa pasta (que o nome nao é fixo) no diretorio temp.

t+

rjdiogo

Não daria pra salvar no banco de dados?

Andre.flu

Infelizmente esta também é uma opção que funcionaria, porém não podemos.

Não há local onde o serciço web estaja disponível no JBoss sem ter que fazer deploy?

A

cara,
acho que nao, acho q vc vai ter que criar um pasta por fora.

t+

Andre.flu

Só uma pasta? e se sim onde crio esta pasta?

Senão deve ter um projeto war só para colocar dentro dele estas imagens e poder assim ter minha URL para acesso a esta imagens? mas se a servidor reiniciar será que não perderei as imagens?

A

entao cara,

so vc criar uma pasta por fora, como por exemplo c:/projeto/imagem

t+

Andre.flu

Mas ai, este diretório como vc falou não esta no contexto web e não poderia acessá-lo por exemplo por:

http://www.meusegundoprojeto.com.br/imagem/image.jpg

Pela sua solução, pelo que entendi teria que usar a servlet acima.

A

entao,

para vc ter do jeito que vc ta querendo, a imagem tem q ta no contexto da sua aplicação.
do jeito que eu te falei, vc teria que ler a imagem no caminho especifico e por exemplo converter em Stream e exibi-la no seu site.

t+

Criado 26 de outubro de 2011
Ultima resposta 28 de out. de 2011
Respostas 11
Participantes 4