Imagem em pasta

4 respostas
D

Olá pessoal,tenho uma aplicação web onde preciso fazer o upload de uma imagem e ao mandar salvar,preciso que ela vá para uma pasta do meu diretório.Alguem poderia me ajudar?

4 Respostas

marcosharbs

da uma olhada no fileupload da apache, é bem pra isso que vc quer fazer, e não é dificil de implementar

marcosharbs

este é um exemplod e um servlet que criei a bastante tempo atras para ver como funcionava o upload de arquivos, vo posta a classe abaixo talvez te ajude, a lib fileupload vc pode baixar no site do apache.

public class ServletUpload extends HttpServlet{
	
	Conexao con = new Conexao();
	String caminho[];

	 

    //Initialize global variables

    public void init() throws ServletException {

    }

 

    //Process the HTTP Post request

    public void doPost(HttpServletRequest request, HttpServletResponse response) 

                       throws ServletException, IOException {

        doGet(request, response);

    }

 

//Process the HTTP Get request

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

            boolean isMultiPart = FileUpload.isMultipartContent(request);

            if (isMultiPart) {

                FileItemFactory factory = new DiskFileItemFactory();

                ServletFileUpload upload = new ServletFileUpload(factory);

                String formulario = "";

                try {

                    List items = upload.parseRequest(request);

                    Iterator iter = items.iterator();

                    while (iter.hasNext()) {

                        FileItem item = (FileItem) iter.next();

                        if (item.getFieldName().equals("tipoForm")) {

                            formulario = item.getString();

                        }

                        if (!item.isFormField()) {

                            if (item.getName().length() > 0) {

                                this.inserirImagemDiretorio(item);

                            }

                        }

                    }

                } 

catch (FileUploadException ex) {

   ex.printStackTrace();

                } 

catch (Exception ex) {

   ex.printStackTrace();

                }

            }
            
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Imagens</title>");
            out.println("</head>");
            out.println("<body>");
            out.println(todasImagens());
            out.println("</body>");
            out.println("</html>");

    }

   // implementação de demais métodos do Servlet.
public String todasImagens(){
	totalImagens();
	recuperaCaminhoImagem();
	String imagens="";
	for (int i=0; i<totalImagens(); i++){
    	imagens+="<img src="+"'"+caminho[i]+"'"+">"+"\n";
    }
	return imagens;
}

public void inserirImagemDiretorio(FileItem item) throws

IOException {



//Pega o diretório /logo dentro do diretório atual de onde a 

//aplicação está rodando

String caminho = getServletContext().getRealPath("/logo") 

+ "/";



// Cria o diretório caso ele não exista

File diretorio = new File(caminho);

if (!diretorio.exists()){

diretorio.mkdir();

}



// Mandar o arquivo para o diretório informado

String nome = item.getName();

String arq[] = nome.split("\\\\");

for (int i = 0; i < arq.length; i++) {

nome = arq[i];

}



File file = new File(diretorio, nome);

FileOutputStream output = new FileOutputStream(file);

InputStream is = item.getInputStream();

byte[] buffer = new byte[2048];

int nLidos;

while ((nLidos = is.read(buffer)) >= 0) {

output.write(buffer, 0, nLidos);

}

output.flush();

output.close();





//Guarda no banco de dados o endereço para recuperação da imagem







/**



Estabeleça a conexão



*/



PreparedStatement declaracao = null;



String sql = "insert into imagens (imagem) values(?)";



try {

	String imagem = item.getName();

    String arquivo[] = imagem.split("\\\\");

    for (int i = 0; i < arq.length; i++) {

        imagem = arquivo[i];

    }

String caminhoimagem = caminho+imagem;

declaracao = con.obterConexao().prepareStatement(sql);



declaracao.setString(1, caminhoimagem);

declaracao.executeUpdate();

} catch (SQLException ex) {

ex.printStackTrace();

} catch (Exception ex) {

ex.printStackTrace();

}

}

public void recuperaCaminhoImagem(){
	int i = 0;
	caminho=new String[totalImagens()-1];
	Statement declaracao = null;
   
    ResultSet resultado = null;

    StringBuffer sql = new StringBuffer();

    sql.append("select imagem from imagens");

    

    try {

        declaracao = con.obterConexao().createStatement();

        resultado = declaracao.executeQuery(sql.toString());

        if (resultado.next()) {



       caminho[i] = resultado.getString("imagem");
       i++;


            

      }

    } catch (SQLException ex) {

        ex.printStackTrace();

    } catch (Exception ex) {

        ex.printStackTrace();

    }


	
}

public int totalImagens(){
	int i=0;
	Statement declaracao = null;
	   
    ResultSet resultado = null;

    StringBuffer sql = new StringBuffer();

    sql.append("select imagem from imagens");

    

    try {

        declaracao = con.obterConexao().createStatement();

        resultado = declaracao.executeQuery(sql.toString());

        if (resultado.next()) {



       i++;



            

      }

    } catch (SQLException ex) {

        ex.printStackTrace();

    } catch (Exception ex) {

        ex.printStackTrace();

    }

	return i;
}




}
D

o upload está ok,o lance é como salvar essa foto na em uma pasta que tenho nop meu servidor…

Andre_Fonseca

oi

tenta utilizar um FileWriter

abs

Criado 7 de novembro de 2008
Ultima resposta 7 de nov. de 2008
Respostas 4
Participantes 3