Subir Archivos
Para subir archivos mediante un formulario y guardarlos en una carpeta local, se requieren algunas librerías adicionales:
Commons IO (Descargar aquí)
Commons FileUpload (Descargar aquí)
Una vez agregadas las librerías al proyecto, implementamos el formulario:
<form action="FileServlet?action=upload" enctype="multipart/form-data" method="post"> Fichero: <input type="file" name="archivo"/> <input type="submit" value="Subir"/> </form>
Como se puede observar el formulario debe ser de tipo multipart. El archivo será enviado al FileServlet para ser procesado.
if (action.equals("upload")) { boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { List items = upload.parseRequest(request); Iterator iterator = items.iterator(); while (iterator.hasNext()) { FileItem item = (FileItem) iterator.next(); if (!item.isFormField()) { String fileName = item.getName(); String root = getServletContext().getRealPath("/"); File path = new File(root + "/../../web/files"); if (!path.exists()) { boolean status = path.mkdirs(); } File uploadedFile = new File(path + "/" + fileName); item.write(uploadedFile); BeanArchivo archivo = new BeanArchivo(); archivo.setNombre(fileName); archivo.setRuta(uploadedFile.getAbsolutePath()); daoarchivo.insert(archivo); } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
Subir y Descargar Archivos desde un Servlet Java