Upload em JSP

6 respostas
J

Fala galera,

to tentando a seculos fazer um upload de imagem e nao consigo.

meu jsp ta assim…

<%@page language="java" import="org.apache.commons.fileupload.*, java.util.*, java.io.*" %>
<%

    String codigo=request.getParameter("codigo");
    String caminhoTemp = "c:\\logos\\temp\\";
    String pasta = "c:\\logos\\final\\";

    if (FileUpload.isMultipartContent(request)) {
        DiskFileUpload upload = new DiskFileUpload();
        upload.setRepositoryPath(caminhoTemp);
        try {
            List items = upload.parseRequest(request);
            Iterator iter = items.iterator();
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
                if (!item.isFormField()) {

                    //String nome = item.getName().toString();
                    String nome = codigo+".jpg";
                    String nomeArquivo = nome.substring(nome.lastIndexOf("\\") + 1);

                    out.write("nome do arquivo: " + nomeArquivo + "<br>");
                    out.write("Arquivo(s)<b> " + item.getName() + "</b> transferido(s)<br>");

                    File arquivo = new File(pasta + nomeArquivo);
                    item.write(arquivo);
                    out.write("Clique <a href=/upload/" + nomeArquivo + ">Aqui</a>. Para ver o resultado do upload");
                }
            }
        } catch (FileUploadException e) {
            out.write("Não foi possível efetivar o upload do arquivo - segue a causa do erro" + "<br>" + e.getMessage());
            e.printStackTrace();
        }
    }

%>

Nisso ele faz o upload CERTINHO!!
mas, quando mudo a pasta para uma da aplicacao, (ex: “…/imagens/”) ele da erro, dizendo que nao pode encontrar o diretorio.

alguem ai pode me dar uma ajuda?
ou alguem conhece uma maneira melhor???

abrç

6 Respostas

lokidarkeden

Você está utilizando um caminho relativo, ele vai tentar aquele caminho em função do diretório corrente que é do servidor web e não sua aplicação.
Tente criar um new File(".") e exibir o absolutePath para você saber em qual diretorio você se encontra trabalhando ai você verá o porque do erro.

Jonhkr

se vc utilizar o diretorio /imagens/ o app vai tentar salvar nesta pasta do seu servidor nao na pasta da aplicacao

por exemplo

sua aplicacao roda em /home/public_jsp/app/

para salvar suas imagens na pasta imagens da sua aplicacao voce teria que setar assim seu path

/home/public_jsp/app/imagens/

e nao assim

/imagens/

entendeu???

J

mas se eu salvar as imagens em uma pasta da minha aplicacao, ela vai ser zerada a cada deploy, certo?? isso nao pode acontecer x.x

eu estou salvando no c:\imagens\ , ta indo direitinho. Mas quando eu coloco na minha aplicacao um

<img src="file:\\\\\\c:\\imagens\\imagem.jpg">

ele nao abre a imagem. Alguem sabe porque?

Jonhkr

Isso eh pq voce esta tentando acessar uma imagem do servidor pelo client side

voce tem que criar um Servlet ou JSP que carregue a imagem do server para o client

ex

seu servlet eh getIMG

voce digita lah getIMG?img=encrypted code

seu servlet ira buscar no banco de dados onde esta salvo sua imagem e retornara ela para voce

exemplo do servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response)  
     throws ServletException, IOException {  
          
        FileInputStream input = new FileInputStream("ARQUIVO A SER LIDO DO SERVER");   
         byte[] buffer = new byte[1024]; // le o arquivo a cada 1kb  
         ServletOutputStream out = response.getOutputStream();  
         int read = 0;  
         while((read = input.read(buffer)) != -1){  
  
           out.write(buffer);  
           out.flush();  
         }  
   
         out.close();  
  
 
    }
J

Jonhkr, antes de tudo gostaria de agradecer a ajuda.

entao,
eu consegui abrir a imagem no IE, colocando a pasta de logo na mesma particao do meu tomcat.
ficou assim…

out.println("<img style=\"max-height: 70px;max-width: 350px;\" src=\"D:/logos/sampa.png\">");

mas quando abro no CHROME ou FF, ele nao abre a imagem de modo algum.

sabe como consertar isso?

quanto ao seu codigo, eu testei ele e se eu acesso no browser , vai normal, mas como eu coloco ele dentro da minha aplicacao? nao saquei essa parte :expressionless:

valeu!!!

J

Ja deu certo!!!

Valeu pela ajuda galera!
qualquer coisa eu volto :smiley:

Criado 2 de maio de 2011
Ultima resposta 4 de mai. de 2011
Respostas 6
Participantes 3