• Martes 19 de Noviembre de 2024, 15:30

Autor Tema:  Guardar archivo cargado  (Leído 1912 veces)

silmarilian

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Guardar archivo cargado
« en: Viernes 9 de Enero de 2009, 20:22 »
0
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:


Código: Text
  1.  
  2. <html>
  3. <head>
  4. <title>Prueba</title>
  5. </head>
  6. <body>
  7. <h1>Cargar fichero</h1>
  8.  
  9. <form action="../servletCargarFichero" enctype="multipart/form-data" method="post">
  10. Fichero: <input type="file" name="fichero" size="70" accept="text/plain;image/jpeg">
  11. <br /><br />
  12. <input type="submit" name="enviar" value="Enviar">
  13. </form>
  14. </body>
  15. </html>
  16.  
  17.  


El siguiente código es del servlet

Código: Text
  1.  
  2. import java.io.*;
  3. import java.net.*;
  4.  
  5. import javax.servlet.*;
  6. import javax.servlet.http.*;
  7.  
  8. import org.apache.commons.fileupload.*;
  9. import org.apache.commons.fileupload.servlet.ServletFileUpload;
  10. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  11. import org.apache.commons.io.FilenameUtils;
  12. import java.util.*;
  13. import java.io.File;
  14. import java.lang.Exception;
  15.  
  16. public class servletCargarFichero extends HttpServlet {
  17.  
  18. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  19. throws ServletException, IOException {
  20. PrintWriter out=response.getWriter();
  21. response.setContentType("application/vnd.wap.xhtml+xml");
  22. response.setContentType("text/html");
  23.  
  24. out.println("<html>");
  25. out.println("<head>");
  26. out.println("<title>Prueba</title>");
  27. out.println("</head>");
  28.  
  29. out.println("<body>");
  30. out.println("<h1>Datos recibidos en el servidor</h1>");
  31. out.println("<hr/>");
  32. out.println("<p>");
  33.  
  34.  
  35. /* Miramos si la petición HTTP está codificada en formato multiparte.
  36. Esto es para que lea los parametros y el fichero a la vez. */
  37. try{
  38. if (ServletFileUpload.isMultipartContent(request)){
  39. ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
  40.  
  41. /* Al ser multiparte, con servletFileUpload.parseRequest(request) recibimos una lista de FileItem. */
  42. List fileItemsList = servletFileUpload.parseRequest(request);
  43.  
  44. String optionalFileName = "";
  45.  
  46. /* FileItem es un campo simple, del tipo nombre-valor*/
  47. FileItem fileItem = null;
  48.  
  49. Iterator it = fileItemsList.iterator();
  50. String fieldName=null;
  51. String value=null;
  52. while (it.hasNext()){
  53. FileItem fileItemTemp = (FileItem)it.next();
  54. if (fileItemTemp.isFormField()){
  55. fieldName=fileItemTemp.getFieldName();
  56. value=fileItemTemp.getString();
  57.  
  58. if (fileItemTemp.getFieldName().equals("filename"))
  59. optionalFileName = fileItemTemp.getString();
  60. }
  61. else
  62. fileItem = fileItemTemp;
  63. }
  64.  
  65. if (fileItem!=null){
  66. // Nombre del archivo a cargar
  67. String fileName = fileItem.getName();
  68.  
  69.  
  70. out.println("<b>Info del fichero cargado:</b><br/>");
  71.  
  72. /*Nos dice el tipo de fichero. Ej.: .jpg (image/jpge), .txt (text/plain) ...)*/
  73.  
  74. out.println("Tipo de fichero: "+fileItem.getContentType()+"<br/>");
  75. out.println("Nombre del campo: "+fileItem.getFieldName()+"<br/>");
  76. out.println("Nombre del fichero: "+fileName+"<br/>");
  77. out.println("Tamaño del fichero: "+fileItem.getSize()+"<br/><br/>");
  78.  
  79.  
  80. /* Guardar el fichero cargado si su tamaño es mayor que 0. */
  81. if (fileItem.getSize() > 0){
  82. if (optionalFileName.trim().equals(""))
  83. fileName = FilenameUtils.getName(fileName);
  84. else
  85. fileName = optionalFileName;
  86.  
  87. String dirName = "/img/fotos/";
  88.  
  89. File saveTo = new File(dirName + fileName);
  90.  
  91. out.println("GUARDADO EN: <b>"+saveTo+"</b>");
  92. try {
  93. fileItem.write(saveTo);
  94.  
  95. out.println("<b>El fichero cargado se ha guardado correctamente.</b>");
  96.  
  97. } //try
  98. catch (Exception e){
  99. out.println("<br/>"+e.getMessage()+"<br/><br/>");
  100. out.println("<b>Ha ocurrido un error cuando intentábamos guardar el fichero cargado.</b>");
  101. }
  102. } // if
  103. } // if
  104. } // while
  105. } //try
  106. catch(Exception e)
  107. {
  108. }
  109. out.println("</p>");
  110. out.println("</body>");
  111. out.println("</html>");
  112. }
  113. }
  114.  
  115.  

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: Guardar archivo cargado
« Respuesta #1 en: Sábado 10 de Enero de 2009, 01:42 »
0
Prueba quitando el "/" del principio en la ruta de las imágenes (img/fotos/ en vez de /img/fotos/)

:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas