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?
Imagem em pasta
D
4 Respostas
da uma olhada no fileupload da apache, é bem pra isso que vc quer fazer, e não é dificil de implementar
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…
Criado 7 de novembro de 2008
Ultima resposta 7 de nov. de 2008
Respostas 4
Participantes 3