Foros del Web » Programación para mayores de 30 ;) » Java »

Guardar archivo cargado

Estas en el tema de Guardar archivo cargado en el foro de Java en Foros del Web. Hola a todos Estoy haciendo una página web y necesito cargar archivos (fotos) y guardarlos en una ruta relativa. Estoy haciendo pruebas y si pongo ...
  #1 (permalink)  
Antiguo 09/01/2009, 12:56
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 16 años, 3 meses
Puntos: 0
Guardar archivo cargado

Hola a todos

Estoy haciendo una página web y necesito cargar archivos (fotos) y guardarlos en una ruta relativa. Estoy haciendo pruebas y si pongo toda la ruta o los guardo en c: funciona perfectamente (puede que a alguien le sirva el siguiente código) pero yo necesito que me los guarde en la carpeta de imágenes donde está todo el proyecto (/img/fotos/) y así me da un error que dice que no encuentra la ruta especificada. Si alguien puede ayudarme se lo agradecería mucho.

Este es el código:


<html>
<head>
<title>Prueba</title>
</head>

<body>
<h1>Cargar fichero</h1>

<form action="http://localhost:8084/ProyectoGuarderia/servletCargarFichero" enctype="multipart/form-data" method="post">

Fichero: <input type="file" name="fichero" size="70" accept="text/plain;image/jpeg">
<br /><br />
<input type="submit" name="enviar" value="Enviar">
</form>
</body>
</html>

------------------------------------------------------------------------------------------------------

package packGuarderia;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.servlet.ServletFileU pload;
import org.apache.commons.fileupload.disk.DiskFileItemFac tory;
import org.apache.commons.io.FilenameUtils;
import java.util.*;
import java.io.File;
import java.lang.Exception;

public class servletCargarFichero extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
response.setContentType("application/vnd.wap.xhtml+xml");
response.setContentType("text/html");

out.println("<html>");
out.println("<head>");
out.println("<title>Prueba</title>");
out.println("</head>");

out.println("<body>");
out.println("<h1>Datos recibidos en el servidor</h1>");
out.println("<hr/>");
out.println("<p>");


/* Miramos si la petición HTTP está codificada en formato multiparte.
Esto es para que lea los parametros y el fichero a la vez. */
try{
if (ServletFileUpload.isMultipartContent(request)){
ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());

/* Al ser multiparte, con servletFileUpload.parseRequest(request) recibimos una lista de FileItem. */
List fileItemsList = servletFileUpload.parseRequest(request);

String optionalFileName = "";

/* FileItem es un campo simple, del tipo nombre-valor*/
FileItem fileItem = null;

Iterator it = fileItemsList.iterator();
String fieldName=null;
String value=null;
while (it.hasNext()){
FileItem fileItemTemp = (FileItem)it.next();
if (fileItemTemp.isFormField()){
fieldName=fileItemTemp.getFieldName();
value=fileItemTemp.getString();

if (fileItemTemp.getFieldName().equals("filename"))
optionalFileName = fileItemTemp.getString();
}
else
fileItem = fileItemTemp;
}

if (fileItem!=null){
// Nombre del archivo a cargar
String fileName = fileItem.getName();


out.println("<b>Info del fichero cargado:</b><br/>");

/*Nos dice el tipo de fichero. Ej.: .jpg (image/jpge), .txt (text/plain) ...)*/

out.println("Tipo de fichero: "+fileItem.getContentType()+"<br/>");
out.println("Nombre del campo: "+fileItem.getFieldName()+"<br/>");
out.println("Nombre del fichero: "+fileName+"<br/>");
out.println("Tama&ntilde;o del fichero: "+fileItem.getSize()+"<br/><br/>");


/* Guardar el fichero cargado si su tamaño es mayor que 0. */
if (fileItem.getSize() > 0){
if (optionalFileName.trim().equals(""))
fileName = FilenameUtils.getName(fileName);
else
fileName = optionalFileName;

String dirName = "/img/fotos/";

File saveTo = new File(dirName + fileName);

out.println("GUARDADO EN: <b>"+saveTo+"</b>");
try {
fileItem.write(saveTo);

out.println("<b>El fichero cargado se ha guardado correctamente.</b>");

} //try
catch (Exception e){
out.println("<br/>"+e.getMessage()+"<br/><br/>");
out.println("<b>Ha ocurrido un error cuando intent&aacute;bamos guardar el fichero cargado.</b>");
}
} // if
} // if
} // while
} //try
catch(Exception e)
{
}
out.println("</p>");
out.println("</body>");
out.println("</html>");
}
}
  #2 (permalink)  
Antiguo 09/01/2009, 16:44
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Guardar archivo cargado

Tendrias que poner la ruta entera donde este la aplicacion en el servidor o conseguir el path de la aplicacion mediante Java
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #3 (permalink)  
Antiguo 09/01/2009, 18:16
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Guardar archivo cargado

Cita:
Iniciado por TresPuntoDos Ver Mensaje
Tendrias que poner la ruta entera donde este la aplicacion en el servidor o conseguir el path de la aplicacion mediante Java
Gracias por tu ayuda. No sabía que se podía obtener la ruta de la aplicación ni nada de eso y al final, por si le sirve a alguien, lo he hecho cogiendo la ruta del contexto de la aplicación.

Muchísimas gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:03.