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?
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
build_successful
Eu utilizo esse servlet para uploads de imagens…
apos realizar o upload pelo metodo doPost é soh chamar o doGet passando o nome da imagem…
publicclassGetImagensMailextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;privatestaticfinalStringDESTINATION_DIR_PATH="C:/pasta/";privateFiledestinationDir;publicvoidinit(ServletConfigconfig)throwsServletException{super.init(config);destinationDir=newFile(DESTINATION_DIR_PATH);if(!destinationDir.isDirectory()){thrownewServletException(DESTINATION_DIR_PATH+" is not a directory");}}protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringnome_arquivo=request.getParameter("nome_arquivo");finalStringcaminho=DESTINATION_DIR_PATH+nome_arquivo;try{Filefile=newFile(caminho);if(!file.exists()){System.err.println(" Não foi possivel encontrar o arquivo na url informada.");}FileInputStreamfis=newFileInputStream(file);BufferedInputStreambis=newBufferedInputStream(fis);byte[]bytes=newbyte[bis.available()];response.setContentType("image/jpg");ServletOutputStreamos=response.getOutputStream();bis.read(bytes);os.write(bytes);}catch(IOExceptione){System.err.println(e.getMessage());}catch(Exceptione){System.err.println(e.getMessage());}}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Templatetemplate=newTemplate();PrintWriterout=response.getWriter();response.setContentType("text/html");DiskFileItemFactoryfileItemFactory=newDiskFileItemFactory();fileItemFactory.setSizeThreshold(1*1024*1024);//1 MB fileItemFactory.setRepository(tmpDir);Filefile=null;Stringgrupo="";ServletFileUploaduploadHandler=newServletFileUpload(fileItemFactory);try{Listitems=uploadHandler.parseRequest(request);Iteratoritr=items.iterator();while(itr.hasNext()){FileItemitem=(FileItem)itr.next();if(item.isFormField()){}elseif(!item.isFormField()){file=newFile(destinationDir,item.getName());item.write(file);System.out.println("<br/>Arquivo gravado em: "+file.getPath());}}}catch(FileUploadExceptionex){ex.printStackTrace();}catch(Exceptionex){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
alissonvla
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
alissonvla
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
alissonvla
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:
Pela sua solução, pelo que entendi teria que usar a servlet acima.
A
alissonvla
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.