Hace mucho estuve tratando de subir archivos a jsp y al principio con mi maquina local hacia una simple copia de los archivos (FileInputStream/FileOutputStream), pero luego de probar el programa desde otra maquina la cuestión no funcionó, y bueno me dí cuenta que se necesitaba hacer una cuestión extra y se usan 2 librerías aunque el código es realmente corto.
la estructura de la aplicación seria algo como
necesitamos las:
commons.fileupload
commons.io
este ejemplo consta de 2 paginas un simple formulario donde se habilita la subida del archivo
index.html
<html> <head> <title>EJERCICIO 04 SUBIR ARCHIVO</title> </head> <body> <!--Lo real mente importante es en el formulario decir --> <!--que van archivos con el enctype igual a MULTIPART/FORM-DATA --> <form action="subir.jsp" enctype="MULTIPART/FORM-DATA" method="post"> <input type="file" name="file" /><br/> <input type="submit" value="Upload" /> </form> </body> </html>
y en nuestra parte interesante la
subir.jsp
<%@ page import="java.util.*" %> <%@ page import="org.apache.commons.fileupload.*" %> <%@ page import="org.apache.commons.fileupload.disk.*" %> <%@ page import="org.apache.commons.fileupload.servlet.*" %> <%@ page import="org.apache.commons.io.*" %> <%@ page import="java.io.*" %> <% /*FileItemFactory es una interfaz para crear FileItem*/ FileItemFactory file_factory = new DiskFileItemFactory(); /*ServletFileUpload esta clase convierte los input file a FileItem*/ ServletFileUpload servlet_up = new ServletFileUpload(file_factory); /*sacando los FileItem del ServletFileUpload en una lista */ List items = servlet_up.parseRequest(request); for(int i=0;i<items.size();i++){ /*FileItem representa un archivo en memoria que puede ser pasado al disco duro*/ FileItem item = (FileItem) items.get(i); /*item.isFormField() false=input file; true=text field*/ if (! item.isFormField()){ /*cual sera la ruta al archivo en el servidor*/ File archivo_server = new File("c:/subidos/"+item.getName()); /*y lo escribimos en el servido*/ item.write(archivo_server); out.print("Nombre --> " + item.getName() ); out.print("<br> Tipo --> " + item.getContentType()); out.print("<br> tamaño --> " + (item.getSize()/1240)+ "KB"); out.print("<br>"); } } %>
para mas información visitar las documentaciones de las librerías
documentación FileUpload
documentación IO
NOTA:
* Al momento de subri archivos donde dice
File archivo_server = new File("c:/subidos/"+item.getName());
, en la parte de «c:/subidos/» poner una direccion segura ya que esta por aqui pueden entrar virus.
* no usar la misma carpeta del proyecto ya que si suben un archivo jsp podria ser perjudicial.
Excelente tutorial.. voy a revisar todo tu material.. espero q sea de la misma calidad de este.. Saludos!-Peru
Hola amigo.. ese ejemplo lo e llevado a mi trabajo.. y me sale error «item.getName()» en vez q me salga solo el nombre me sale toda direccion.. me puedes ayudar.. tu q has manejado mas tiempo esta herramienta. saludos
Te aparece Error, o la dirección?
amigo me marca error en esta linea en el request en esa variable que recibo o que?
List items = servlet_up.parseRequest(request);
estuve probando tu codigo y me arrojaba error, pero solo le agregue lo siguiente y me funciono
for(int i=0;i<items.size();i++){
FileItem item = (FileItem) items.get(0);
String n[] =item.getName().replace("\\","-").split("-");
String nombreReal=n[n.length-1]; //nombre real del archivo para guardar
/*item.isFormField() false=input file; true=text field*/
if (! item.isFormField()){
/*cual sera la ruta al archivo en el servidor*/
File archivo_server = new File("c:/subidos/"+nombreReal);
//para sacar solo el nombre del archivo hay que guardarlo en un file
File file=new File(item.getName());
File nuevoPath= new File(«path carpeta donde se guarda»+file.getName());
item.write(nuevoPath);
Buenas!
He seguido los pasos que indicas, pero me salta el siguiente error:
org.apache.jasper.JasperException: No se puede compilar la clase para JSP:
Ha tenido lugar un error en la línea: 10 en el archivo jsp: /subir.jsp
FileItemFactory cannot be resolved to a type
7:
8: <%
9: /*FileItemFactory es una interfaz para crear FileItem*/
10: FileItemFactory file_factory = new DiskFileItemFactory();
11:
12: /*ServletFileUpload esta clase convierte los input file a FileItem*/
13: ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
Ha tenido lugar un error en la línea: 10 en el archivo jsp: /subir.jsp
DiskFileItemFactory cannot be resolved to a type
7:
8: <%
9: /*FileItemFactory es una interfaz para crear FileItem*/
10: FileItemFactory file_factory = new DiskFileItemFactory();
11:
12: /*ServletFileUpload esta clase convierte los input file a FileItem*/
13: ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
Ha tenido lugar un error en la línea: 13 en el archivo jsp: /subir.jsp
ServletFileUpload cannot be resolved to a type
…..
He introducido el .jar en mi proyecto, aunque dudo si lo he hecho bien. El que he incluido es el siguiente:
commons-fileupload-1.2.1.jar
que está en el .zip binario.
Gracias!
lo que pasa es que tienes que usar los 2 jars,
amigo me marca error en esta linea en el request en esa variable que recibo o que?
List items = servlet_up.parseRequest(request);
He introducido los 2 jars, y me ocurre lo mismo.
¿Qué puedo hacer? Por cierto, los archivos commons-…. , los incluyo de forma normal en el proyecto, pero al compilar el jsp, me salta el error…
con que programa estas trabajando?
Hola ingeniero, estoy trabajando los mismo y me ocurre el mismo error. Trabajo con ecplise, Qué debo hacer
Leydi, tienes que agregar las librerías a través del eclipse. Yo las agregué directamente sobre el tomcat pues yo utilizo JCreator para esas aplicaciones
Si, ya lo hice, sin embargo sigue el mismo error
Ok era cuestion de librerias, las añadi nuevamente y ya no me genera error, pero ahora no me hace nada, es como si recibiera null.
MUchas gracias por todo, ya logre cargarlo
Leydi, por el chat en facebook, es mejor XD
man yo estoy conectado como hasta dentro de 4 – 5 horas si algo agregame y me hablas por MSN
Buenas, ya conseguí subir un archivo al servidor, lo único que ahora tengo el siguiente problema:
¿Cómo puedo subir varios archivos a la vez? Es decir, tengo varios inputs de tipo «file» en el mismo formulario y quiero detectarlos todos para almacenarlos.
Gracias
Paco este código debe funcionar lo único que debes hacer es agregar los inputs (con diferentes nombres) y listo
Si, si ya conseguí subir, pero varios archivos no me deja, sólo me detectaba el primer archivo a subir.
Gracias
como lo solucionastes? yo tengo el mismo problema, dudo q veas lo q escribo pq hace mas d eun año q tuvistes el problema, pero bueno, aqui lo dejo,
Gracias
PANA POR FAVOR AYUDAME EN ALGO COMO PUEDO HACER PARA UNA VEZ COPIADO LA IMAGEN EN UNA CARPETA ESPECIFICA PUEDA GUARDAR EL NOMBRE DE LA FOTO EN LA BASE DE DATO LA CUAL ESTOY USANDO MYSQL
viejo Andres eso ya esta hecho revisa esta entrada https://ingeniods.wordpress.com/2010/05/07/mi-primera-aplicacion-jsp/
Hola, llegue a un código semejante al tuyo hace un tiempo atraz. El problema que tengo es que no puedo mostrar luego los archivos (imagenes en mi caso) que subo. Tengo que hacer un redeploy para hacerlo, por ahí vi que tenes que escribir un servlet, pero no dicen mucho. Tenes alguna idea de como solucionar esto?.
Gracias
no entendi tu pregunta. pero no necesariamente debe ser un servlet ademas en el código no escribí ningún servlet la clase ServletFileUpload es del paquete «org.apache.commons.fileupload.servlet» (apache.commons) no se que hace realmente. lo que haría es simplemente agregar etiquetas img.
Gracias por tu respuesta.
Yo use las mismas librerias para realizar el fileUpload, pero las implemente en un servlet.
El problema que encuentro es que, cuando cargas una imagen o archivo no te lo encuentra, si lo pones en un directorio que esta fuera del webapps y si esta dentro del webapps, tenes que hacer un redeploy de la app para que puedas ver lo que cargas.
De alguna manera, en forma dinámica luego de cargar el archivo lo mostras en la pagina jsp?
// File archivo_server = new File(«c:/subidos/»+item.getName());
Bueno Amigo,
Ya encontre la solución a mi problema.
Cuando subis un archivo y lo almacenas dentro del webapps (no recomendado porque en un undeploy se elimina), tenes que realizar un redespliegue para que tomcat tome los datos.
Entonces para hacer esto tenes que abrir los archivos situados desde un dir externo… complicado porque el tag no lo soporta. Entonces lo que haces es leer el archivo usando un FileServlet (ImageServelt en mi caso) que te proporcione IO.
Te dejo de donde saque mi solución.
http://faq.javaranch.com/java/ImageServlet
En mi caso subo unas imágenes, y las quiero mostrar luego de subirlas, por lo que no puedo esperar un redeploy.
Gracias.
oye disculpa , que debo de hacer cuando me sale esto:
Exception Details: java.lang.NoSuchMethodError
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(Lorg/apache/commons/fileupload/RequestContext;)Ljava/util/List;
Possible Source of Error:
Class Name: org.apache.commons.fileupload.servlet.ServletFileUpload
File Name: ServletFileUpload.java
Method Name: parseRequest
Line Number: 126
con todos los ejemplos que eh probado me sale ese error y ya tengo todos los .jar que necesita…
ese error es rarisimo a mi una vez me salio cuando copie el jar que no era, parace que en la clase «ServletFileUpload.java» nio esta definido el metodo «parseRequest» pero es lo mas raro del mundo estas seguro que copiaste y pegaste igual?… bueno de todas formas yo trabajo con Tomcat 6.x y ahora mismo no puedo testear pero apenas llegue a casa lo hago
si lo copié igual..baje todos los .jar posibles..quité y puse y nada…pero no te preocupes ya pude subir mi archivo el problema ahora es que solo acepta .jpg y .gif y mi proyecto debe aceptar todos los tipos de archivo.. alguna idea de como hacerlo?
te lo agradecería mucho…!!!
me gustaría mucho ver el código con el que estas trabajando, porque este admite todo tipo de archivos
este es mi index.jsp
———————————-
<jsp:setProperty name="upBean" property="folderstore" value="» />
SUBIR ARCHIVO
<%
if (MultipartFormDataRequest.isMultipartFormData(request)) {
MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);
String todo = null;
if (mrequest != null) {
todo = mrequest.getParameter("todo");
}
if ((todo != null) && (todo.equalsIgnoreCase("upload"))) {
Hashtable files = mrequest.getFiles();
if ((files != null) && (!files.isEmpty())) {
java.text.SimpleDateFormat formato = new java.text.SimpleDateFormat("yyMMddHHmmss");
String archivo = ((UploadFile) mrequest.getFiles().get("uploadfile")).getFileName();
int posicionPunto = archivo.indexOf(".");
String nombreImagen = archivo.substring(0, posicionPunto);
String extension = archivo.substring(posicionPunto);
nombreImagen = nombreImagen + formato.format(new java.util.Date());
nombreImagen = nombreImagen + extension;
((UploadFile) mrequest.getFiles().get("uploadfile")).setFileName(nombreImagen);
UploadFile file = (UploadFile) files.get("uploadfile");
if (file != null) {
out.println("El archivo: " + file.getFileName() + " se subio correctamente");
}
upBean.store(mrequest, "uploadfile");
} else {
out.println("Archivos no subidos");
}
} else {
out.println(" todo=» + todo);
}
}
%>
——————————–
y esta parte sólo para mostrar mi msj de error..
error.jsp
——————————–
JSP Page
Solo puede subir .jp y .gif
Haga click AQUI para retornar
————–
espero si me puedas ayudar…. gracias de antemano.!!!
faltaría upBean y es un poco diferente de la forma que lo hago yo
ya estuvo…gracias x tu atención.. de rato te molesto!!!
¿que era?, ¿como lo solucionaste?
si tenias razón me faltaba esto :
<jsp:setProperty name="upBean" property="folderstore" value="» />
……………………………………..
oye otra pregunta!!!…alguna idea de como forzar la descarga de los archivos….
digamos que despues de adjuntar, te muestre el link de descarga; le des clic y te de la opcion sólo de descargar…
Tengo esta linea.. pero lo que hace es que al momento de adjuntar luego me manda el cuadro de dialogo para descargarlo…sin mostrarme el link de descarda antes…
checa:
response.setHeader(«Content-Disposition»,»attachment; filename=\»»+file.getFileName()+ «\»»);
aah por cierto estoy trabajando = con tu código..!!!!
de antemano gracias!!!!…
Hola..!! Saben, conseguí subir el archivo…
Cree en el «C» el directorio «subidos», quedandome el siguiente PATH:
C:/subidos
Esta claro que esa es una dirección definida en el servido, (Me supongo)
Ahora salta una pregunta y en verdad urgente de resolver. Lo que quiero es subir el archivo no a esa ruta, sino a un http://FTP...!!!
L siguiente línea de este tutorial es:
File archivo_server = new File(«c:/subidos/»+item.getName());
Quiero saber como poner el PATH para que se suba al FTP. Quizas deba crear una conexion al FTP?? O como lo hagooo??? es de urgencia por fa 😉 gracias de antemano a TOOODOS 😉
AYUUUUUUUUUUUDAAAAAAAAAAAAAAAAAAA!!!!!!!!!!!!!!!!!! Nadie responde 😦
pronto te respondo no he tenido tiempo he estado ocupado con muchas expresiones regulares en estos dias pero de seguro mañana te escribo… ok
por facebook respondo mas rapido, me llega al celular jejeje
Jeje OKI ..!!! Pero cual es tu facebook para escribirte pr alli????
http://www.facebook.com/pages/Ingenio-DS/121696387891385
ola amigo baje la aplicacion pero me sale errores el index esta bien
el otro jsp subir no me reconoce las librerias….lo estoy aciendo con netbeans
necesito ayuda..!! tu codigo funciona perfecto … pero ahora enviando mas datos como un input type text en la parte del index.html ya no sirve el getParameter del lado del jsp … esto se realiza de otra forma… pero no logro hacerlo con tu codigo …
Yo tengo ese problema, consigo subir un archivo, pero no puedo recuperar más parámetros. ¿Alguna ayuda?
Hola gente, veo que después de tanto tiempo sirvio para algo el file upload ese que tanto me complico.
Por desgracia tire a la basura el proyecto, asi que si quieren dejo la última version del sistema para que alguien lo use. mailto:aehtiopicus@gmail.com
http://elproyectito.blogspot.com/ ahi esta un link donde se puede descargar todo el proyecto y las instrucciones de compilarlo y correrlo, si a alguien le interesa contactese, tal vez podamos seguir.
tristemente me despido.
Muchas gracias llevaba varias días buscando cómo subir un archivo hasta que encontré tu entrada.
Muy útil y de una forma muy sencilla.
Un saludo.
Hola Que tal estuve probando tu aplicación y al principio funciono pero después lo volví a probar y me arroja el siguiente error:
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /subir.jsp en línea 15
12: /*ServletFileUpload esta clase convierte los input file a FileItem*/
13: ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
14: /*sacando los FileItem del ServletFileUpload en una lista */
15: List items = servlet_up.parseRequest(request);
16:
17: for(int i=0;i<items.size();i++){
18: /*FileItem representa un archivo en memoria que puede ser pasado al disco duro*/
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
causa raíz
javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.subir_jsp._jspService(subir_jsp.java:96)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
No se que paso espero tu respuesta Grasias
Por alguna razón esta clase «javax.servlet.ServletInputStream» no la encuentra revisa si tienes los paquetes necesarios en tu servidor
aquí lo puedes conseguir http://www.jarfinder.com/index.php/java/info/javax.servlet.ServletInputStream o de la pagina que recomiendo http://commons.apache.org/io/download_io.cgi
verifica que el Commons FileUpload jar y el Commons IO jar estén en el directorio WEB-INF/lib de tu aplicación.
y creo que con eso se debe curar.
Gracias por el ejemplo… me funciono…. tremendamente bien! rapido y sencillo.
no me dio error…. Gracias! salu2 desde Guatemala!
que bueno, Erick, puedes decir cual es el ambiente en que se está ejecutando. (Sistema operativo, Servidor, IDE si aun lo usas)
Algo tarde mi respuesta jeje…. pues lo estoy usando en Ubuntu… y solo cambie la ruta de las imágenes de windows c:/subidos por–> /tmp/subidos y listo, funciona muy bien, y estoy usando netbeans 6.9.1 y apache tomcat 7; igual lo probé en Windows y sirve de igual manera, creo que los bugs a veces están a la hora de jalar las librerías que ayudan a la subida de los archivos. Salu2
hola al parecer a estado abandonado el post de comentarios jejeje
Mi pregunta es la siguiente:
En el tomcat me salta el siguiente error
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /subir.jsp en línea 20
17: for(int i=0;i<items.size();i++){
18: /*FileItem representa un archivo en memoria que puede ser pasado al disco duro*/
19: FileItem item = (FileItem) items.get(0);
20: File file=new File(item.getName());
21: File nuevoPath= new File("C:/Archivos de programa/Apache Software Foundation/Tomcat 6.0/webapps/Cinearmas/subidos/"+file.getName());
22: item.write(nuevoPath);
23: /*item.isFormField() false=input file; true=text field*/
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:519)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:428)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
causa raíz
java.lang.NullPointerException
java.io.File.(File.java:222)
org.apache.jsp.subir_jsp._jspService(subir_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Cuando lo probo corrio genial pero ahora no funciona las librerias estan en la carpetay todo y no se que es lo que pasa.
Al parecer, item tiene el valor de null, verifica tu formulario ¿en el enctype que valor tiene?.
cuando coloco el enctype=»MULTIPART/FORM-DATA» en la JSP realizo un request.getParameter del input file
y me sale null, al igual que en tu ejemplo coloque un request.getParameter del input file y me sale null.
pero retiro el enctype=»MULTIPART/FORM-DATA» y con el request me manda el nombre de la imagen ó archivo
De antemano gracias.
Listo, Enrique si no es mucho pedir podrías mostrar tu código. pues el formulario y el que busca el nombre de los archivo solo esos dos fragmentos. para que a la gente que de pronto le pase algo así se pueda ubicar más fácilmente.
:::::::::::::::::::::::::::::::::::Código del del formulario.jsp::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::Código del de subir.jsp::::::::::::::::::::::::::::::::::::::::::::::::::
String Prueba =request.getParameter(«file»);
FileItemFactory file_factory = new DiskFileItemFactory();
ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
List items = servlet_up.parseRequest(request);
for(int i=0;i » + item.getName() );
out.print(» Tipo –> » + item.getContentType());
out.print(» tamaño –> » + (item.getSize()/1240)+ «KB»);
out.print(«»);
out.print(prueba);////////ESTE ES EL QUE ME DICE NULL PERO AUN ASI AGREGA EL ARCHIVO A LA CARPETA
out.print(nuevoPath.getAbsolutePath()+»»);
out.print(file.getAbsolutePath());
}
//////Este es el de tu archivo\\\\\\\
En este no me manada nada de Excepciones pero en este:
http://homechicks.dyndns.org:8080/Cinearmas/altapelicula.txt<—–Aqui esta el formulario con el enctype(linea 114)
http://homechicks.dyndns.org:8080/Cinearmas/pelis.txt<—— Y esta es la JSP a donde se envian los datos del formulario y me marca el java.lang.NullPointerException en la linea 50.
ahi esta mi estimado ingenioDS todas las variables que coloco en el de pelis.txt las necesito para agregar a la Base de datos y de la imagen solo quiero el nombre o si tienes algo que no me marque el error estaria mejor Nos vemos Gracias a todos !!!XD
PD: Me dicen si no funcionan los links
Gracias.
hola al parecer a estado abandonado el post de comentarios jejeje
Mi pregunta es la siguiente:
En el tomcat me salta el siguiente error
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /subir.jsp en línea 20
20: File file=new File(item.getName());
java.lang.NullPointerException
java.io.File.(File.java:222)
org.apache.jsp.subir_jsp._jspService(subir_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
Cuando lo probe corrio genial pero ahora no funciona, las librerias estan en la carpeta y todo y no se que es lo que pasa.
hola, yo lo monte en el tomcat 6 en ubuntu 10.04 casi todo funciona solo por un error no c que podria ser, solo cambie la ruta del directorio a una carpeta dl tomcat del proyecto pro no guarda la imagen ni aunque la guarde nl escritorio, ¿Qué puedo hacer? gracias x tus codigos.
Ha tenido lugar un error en la l�nea: 27 en el archivo jsp: /subir.jsp
String literal is not properly closed by a double-quote
24: if (! item.isFormField()){
25:
26: /*cual sera la ruta al archivo en el servidor*/
27: File archivo_server = new File(«/usr/local/tomcat/apache-tomcat- 6.0.18/webapps/Prueba/»»+item.getName());
28: /*y lo escribimos en el servido*/
29: item.write(archivo_server);
30:
El error pues no se pero por lo pronto la excepcion que te lanza está en la linea 27
27: File archivo_server = new File(«/usr/local/tomcat/apache-tomcat- 6.0.18/webapps/Prueba/«»+item.getName());
File archivo_server = new File(«/usr/local/tomcat/apache-tomcat- 6.0.18/webapps/Prueba/«+item.getName());
tienes una doble comilla.
Si grax, vi mi error lo corregi pro no se visualiza la imagen que se carga en el navegador solo muestra los datos d la imagen, apenas stoy dando mis pininos en jsp, me gusta la parte de la programacion que podria agregarle para ke se cargue la imagen y la muestre, grax x tu ayuda.
Hola, he seguido tu codigo y todo funciona perfecto, pero la lista resultante me sale vacia.
Sabes cual podria ser una causa?
Ya he comprobado que si recibe el parametro.
De ante mano, gracias!!
pero el tipo de formulario
el enctype debe ser ese (MULTIPART/FORM-DATA)
hola, tengo una duda con respecto al guardar la imagen, en mi caso me funciona todo bien pero mi problema es que cuando voy a otra maquina tengo que cambiar la direccion de la carpeta para guardar la imagen y me toca entrar al codigo y cambiarla manualmente,
File archivo_server = new File(«C:/Users/Andres/Documents/NetBeansProjects/subirImagen/web/subidos/»+item.getName());
¿Hay alguna forma de guardar las imagenes dentro de mi proyecto para no tener que cambiar la direccion cada vez que cambie de maquina?
Muchas gracias por ese gran aporte..
Gracias funciono a la perfección, NO tiene errores, probado en netbenas con apachetomcat
Gracias David. por lo del entorno donde lo ejecutaste.
Hola ingeniods, sabes estoy guardando la ruta de la imagen en m bd pero tengo un problema el formulario del input lo cargo en un div y no deseo que se me recargue lapagina he usado ajax y nada sera que no existe ninguna forma de subir la imagen al disco sin recargar?
Pues, con Ajax debería funcionar como lo deseas, habría que revisar la implementación que estas haciendo
Hola, , con tu codigo existe alguna manera para que no recargue pues e intentado y si el action no esta no hace nada es decir dentro de un div (estoy trabando en jsp)
Para hacer eso te tocaría:
1. Hacer una pagina que solo suba los archivos
2. En tu pagina hacer por fuera un formulario que sea para subir el documento
3. A ese formulario para subir documento (no se si con el ID de la session) un parámetro para identificar los documentos que subes
4. utilizar Ajax.
seria copiar y pegar lo que en esta pagina hay (http://www.miguelmanchego.com/2009/subir-archivos-usando-ajax-jquery/) pero la pagina que procesa el archivo ya no será la que ahí sino la que escribiste en el punto 1
Hola Miguel te escribo al correo
Disculpa Ingeniods, te envie un e-mail por fa revisalo. Gracias
excelente man!!! me sirvio mucho pa un proyecto
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /pruebas.jsp en línea 67
64: // algunos solo pasan el nombre del fichero subido, pero otros
65: // como Iexplorer, pasan la ruta absoluta, y esto crea un pequeño problema al escribir
66: // el fichero en el servidor.
67: item.write(new File(destino,file.getName()));
68: out.println(«Fichero subido»);
69:
70: }
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:567)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:461)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
causa raíz
java.io.FileNotFoundException: C:\Biblioteca\Imágenes \Imágenes de muestra\Desert.jpg (El sistema no puede encontrar la ruta especificada)
java.io.FileOutputStream.open(Native Method)
java.io.FileOutputStream.(Unknown Source)
java.io.FileOutputStream.(Unknown Source)
org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:390)
org.apache.jsp.pruebas_jsp._jspService(pruebas_jsp.java:127)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
me podria ayudar a resolver este problema que tengo por favor.
Estas seguro que la dirección donde estas tratando de guardar el archivo existe
Insert title here
Fichero
<%
//Ruta donde se guardara el fichero
File destino=new File("C:\\Archivos de programa\\Apache Software Fundation\\Tomcat 7.0\\webapps\\ROOT\\");
// Convertimos el HTTPRequest en un ContextRequest,
// este paso es necesario en la ultima version,
// ya que los metodos de las versiones anteriores
// se han quedado desfasados.
ServletRequestContext src=new ServletRequestContext(request);
//Si el formulario es enviado con Multipart
if(ServletFileUpload.isMultipartContent(src)){
//Necesario para evitar errores de NullPointerException
DiskFileItemFactory factory = new DiskFileItemFactory((1024*1024),destino);
//Creamos un FileUpload
ServletFileUpload upload=new ServletFileUpload(factory);
//Procesamos el request para que nos devuelva una lista
//con los parametros y ficheros.
List lista = upload.parseRequest(src);
File file= null;
//Recorremos la lista.
Iterator it = lista.iterator();
while(it.hasNext()){
//Rescatamos el fileItem
FileItem item=(FileItem)it.next();
//Comprobamos si es un campo de formulario
if(item.isFormField())
//Hacemos lo que queramos con el.
out.println(item.getFieldName()+"»);
else
{
//Si no, es un fichero y lo subimos al servidor.
//Primero creamos un objeto file a partir del nombre del fichero.
file=new File(item.getName());
//Lo escribimos en el disco
// usando la ruta donde se guardara el fichero
// y cogiendo el nombre del file
// Nota: Se podria hacer usando el objeto item en vez del file directamente
// Pero esto puede causar incompatibilidades segun que navegador, ya que
// algunos solo pasan el nombre del fichero subido, pero otros
// como Iexplorer, pasan la ruta absoluta, y esto crea un pequeño problema al escribir
// el fichero en el servidor.
item.write(new File(destino,file.getName()));
out.println(«Fichero subido»);
}
}
}
%>
este es el codigo que utilice.
probe el codigo, pero me arroja el siguien error
Ha tenido lugar un error en la línea: 10 en el archivo jsp: /s1.jsp
FileItemFactory cannot be resolved to a type
7:
8: MiProyecto
en este directorio tengo el index.jsp y el subir.jsp y el lib lo tengo dentro web inf pero no he logrado arreglarlo…
parece que no has importado correctamente las bibliotecas
cuales bibliotecas, ya hecho de todo pero no me funciona… le agradezco me heche una mano…
dentro de la carpeta lib deben estar los jar. ya sea la del tomcat o la de tu aplicación.
hey. graciaspor tu ejemplo de echo me sirvio bastante, me salio a la priomera. pero ahora mi duda es como puedo visualizar loq ue he subido, es decir. una vez que ya subimos la imagen digamos, yo coloque un boton (afiguradamente) para que me muestre un jsp / html con la direcion de la imagen es decir esto y nadamas (en otras palabras ver lo que cargue al servidor) el problema ocurre que no me encuentra la imagen aun en raiz. de hecho me tomma la direcion como si fuese una carpeta el nombre C:\.
asi me lo muestra al buscar la direcion de la imagen localhost:8084/ejemplo/C:/subidos/ima1.jsp
veo que lo que hace es mostrarme un objeto de dicha direccion, y no me la toma desde la raiz. que puedo hacer. por cierto ando usando netbeans para hacer este ejemplo,
debes poner la ruta de los archivos que subes dentro de tu proyecto, y luego al leerla le quitas la parte que desees con un direccion=direccion.replaceFirst();
Muy buen aporte, salio perfectamente
Tengo un problema con el programa me sale un error 500 en la linea de item.write(archivo_server);
Andre, lo que puedes hacer es proveer más información del error, ya sabemos que es interno al servidor pero… que tal está tomcat de permisos ¿si puede escribir en el disco?
la verdad nose aka dejo el error
El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.
excepción
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /subir.jsp en línea 27
24: /*cual sera la ruta al archivo en el servidor*/
25: File archivo_server = new File(«c:/subidos/»+item.getName());
26: /*y lo escribimos en el servido*/
27: item.write(archivo_server);
28: out.print(«Nombre –> » + item.getName() );
29: out.print(» Tipo –> » + item.getContentType());
30: out.print(» tamaño –> » + (item.getSize()/1240)+ «KB»);
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:519)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
causa raíz
java.io.FileNotFoundException: c:\subidos\C:\Users\Wizard\Documents\prueba\prubasubir.jpg (El nombre de archivo, el nombre de directorio o la sintaxis de la etiqueta del volumen no son correctos)
java.io.FileOutputStream.open(Native Method)
java.io.FileOutputStream.(Unknown Source)
java.io.FileOutputStream.(Unknown Source)
org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:439)
org.apache.jsp.subir_jsp._jspService(subir_jsp.java:85)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/6.0.32.
el error es el siguiente, la dirección del archivo que estas tratando de subri es «c:\subidos\C:\Users\Wizard\Documents\prueba\prubasubir.jpg» debería ser «C:\Users\Wizard\Documents\prueba\prubasubir.jpg»
Hola! estoy intentando implementarlo pero en cuanto pongo el formulario multipart/form-data nose porque pero el servlet se me cuelga, no me carga ni hace nada se queda con pantalla blanca. El form lo tengo bien creo yo tal que asi:
en el servlet he de añadirle algo en especial para que no falle?
gracias
en que falla?
Pues si le pongo al formulario lo del multipart/form-data ya no me envía a donde me redirecciona bien, se me queda abierto la pagina en blanco con la direccion del servlet. En cambio si no pongo lo de multipart me redirecciona perfecto pero claro, no me funciona el archivo para subir así.
podría ser el fallo que mi formulario tiene tanto selects, radios, textarea y files? Es imcopatible con los input radio?
Miguel Angel donde estoy son las 9:15 estoy en horario GTM-5 me conecto al FB y MSN a la 1pm
hola, tengo un problema, me funciona bn esto codigo, pero ahora lo estoy pasando a un proyecto con una bd en postgres y se cualga, y me arroja este error…
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /upload.jsp en línea 26
23: for(int i=0;i<items.size();i++){
24: /*FileItem representa un archivo en memoria que puede ser pasado al disco duro*/
25: FileItem item = (FileItem) items.get(0);
26: String n[] =item.getName().replace("\\","-").split("-");
27: String nombreReal=n[n.length-1]; //nombre real del archivo para guardar
no parece ser la base de datos… creo que si quitas la parte donde se guardan los datos igual generaría la exception
no, si quito esta parte del codigo, los datos se guardan… loq ue no me deja es adjuntar el archivo…
por favor escribe la excepcion completa.
Hola! ya conseguí arreglarlo, te comento hay un par de errores en tu código!
1- La versión que bajamos desde esta misma pagina no es la misma que la de las capturas que hay hay un error simple en subidos.jps :
19 FileItem item = (FileItem) items.get(0); // Esta a 0 en vez de poner la variable i
2- Por otro lado el código falla si quieres subir mas de un input file en el formulario y alguno de ellos no estas obligado a poner un archivo en concreto (que lo puedes dejar sin escoger nada), como no comprueba que no se haya escogido peta cuando ocurre eso. Lo he solucionado despues de comprobar si es un input file o no
he añadido un if(!item.getName().equals(«»)) , es decir el código final me ha quedado así:
<%
/*FileItemFactory es una interfaz para crear FileItem*/
FileItemFactory file_factory = new DiskFileItemFactory();
/*ServletFileUpload esta clase convierte los input file a FileItem*/
ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
/*sacando los FileItem del ServletFileUpload en una lista */
List items = servlet_up.parseRequest(request);
for(int i=0;i » + item.getName() );
out.print(» Tipo –> » + item.getContentType());
out.print(» tamaño –> » + (item.getSize()/1240)+ «KB»);
out.print(«»);
}
}
}
%>
Espero que sirva para alguno más 😉
No Entro todo el codigo sigo desde el for:
for(int i=0;i » + item.getName() );
out.print(» Tipo –> » + item.getContentType());
out.print(» tamaño –> » + (item.getSize()/1240)+ «KB»);
out.print(«»);
}
}
}
1: for(int i=0;i » + item.getName() );
12: out.print(» Tipo –> » + item.getContentType());
13: out.print(» tamaño –> » + (item.getSize()/1240)+ «KB»);
14: out.print(«»);
15: }
16: }
17:}
No me deja poner el código os lo dejo aquí ->>
<%
/*FileItemFactory es una interfaz para crear FileItem*/
FileItemFactory file_factory = new DiskFileItemFactory();
/*ServletFileUpload esta clase convierte los input file a FileItem*/
ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
/*sacando los FileItem del ServletFileUpload en una lista */
List items = servlet_up.parseRequest(request);
for(int i=0;i " + item.getName() );
out.print("
Tipo --> " + item.getContentType());
out.print("
tamaño --> " + (item.getSize()/1240)+ "KB");
out.print("
");
}
}
}
%>
Gracias Miguel Angel… El Codigo esta perfecto, Igual Ingenio DS el post esta genial… gracias…
validas las anotaciones pero en el codigo pongo 0 porque solo tengo un input, aunque lo corrijo lo más pronto posible; otra cosa que sucede es que en mis post siempre hago el caso feliz porque la idea es hacer algo que funcione y que vaya directo al grano.
De todas formas muchas gracias Miguel Angel
Un placer wilson todo sea compartir 😉 y genial el post Igenio DS
Hola ingenio DS…
Soy muy nuevo con las aplicaciones JSP y me ocurre el siguiente problema…
pero reitero que e precticado con las otras aplicaciones y han sido excelentes y muy facil de aprender…
te agradesco mucho por compartir tu conocimiento con los demas…
bueno…
el error es el siguiente…
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /subir.jsp en línea 25
22: /*cual sera la ruta al archivo en el servidor*/
23: File archivo_server = new File(«c:/subidos/»+item.getName());
24: /*y lo escribimos en el servido*/
25: item.write(archivo_server);
26: out.print(«Nombre –> » + item.getName() );
27: out.print(» Tipo –> » + item.getContentType());
28: out.print(» tamaño –> » + (item.getSize()/1240)+ «KB»);
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
causa raíz
java.io.FileNotFoundException: c:\subidos\C:\Documents and Settings\Administrador\Escritorio\tarea.txt (El nombre de archivo, directorio o etiqueta del volumen no es válido)
java.io.FileOutputStream.open(Native Method)
java.io.FileOutputStream.(Unknown Source)
java.io.FileOutputStream.(Unknown Source)
org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:416)
org.apache.jsp.subir_jsp._jspService(subir_jsp.java:92)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
bueno…
yo estoy utilizando eclipce + tomcat…
o es que me hace falta agregar algo o q…
por que no entiendo como solucionarlo…
agregue las las librerias al buil path y no…
porfavor…
¿Esta aplicacion me puede sirve para subir archivos txt u otro tipo de archivo?
Dayron, el problema es que al momento de obtener el nombre está leyendo la ruta completa al archivo y no el nombre de este:
o sea esta leyendo «C:\Documents and Settings\Administrador\Escritorio\tarea.txt» para que funciones debes leer solamente el «tarea.txt»; para que la dirección donde se intente escribir sea «c:\subidos\tarea.txt» en vez de «c:\subidos\C:\Documents and Settings\Administrador\Escritorio\tarea.txt»
Ingeniods…
Muchas gracias me sirvió me muchísimo tu ejemplo…
Te agradezco por tu aporte a los aprendices…
Me funciono perfecto…
solo tenia un errorcito que se cuadraba cambiándole el método…
ojala tengas muchísimos mas aportes…
Y como lo puedo solucionar…
debo cambiar algun metodo…
estoy tratando de subir un archivo… como dato adjunto… hice un form ingreso los datos y el archivo adjunto…
pero a la hora de insertar los datos me arroja un error…. el archivo adjunto queda en la direccion que le di, pero los datos no los ingresa…. me pueden echar una manito, con estooo…
Wilson es por el enctype=»MULTIPART/FORM-DATA» debes utilizar el uno que especifica enctype=»multipart/mixed» para que envíe tanto textos como archivos
Gracias… pero ahora me sale este error….
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /prueba2.jsp en línea 20
17: /*ServletFileUpload esta clase convierte los input file a FileItem*/
18: ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
19: /*sacando los FileItem del ServletFileUpload en una lista */
20: List items = servlet_up.parseRequest(request);
21:
22: for(int i=0;i<items.size();i++){
y luego de que haga esto, para que una persona envie el archivo adjunto a otra persona ella lo pueda descargar… como puedo hacer, es que en esto no tengo mucho conocimiento…
le agradezco su ayuda de antemano….
en el comentario número 94 (https://ingeniods.wordpress.com/2010/04/27/subir-archivos-en-jsp/#comment-531) aclaran algo que puede estar pasando… si no mañana a las 2pm hora colombiana hacemos una vídeo conferencia y arreglamos eso
Miguel Angel….
en el for debe haber un error…
ingeniods… necesito de su ayuda… por que no he podido solucionar mi problema..
Gracias…
estuve conectado, respondiendo algunas preguntas en el livestream, por facebook pues no sé cuando cuadramos
Buenas tarde
tengo el siguiente error
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /subir.jsp en línea 25
22: /*cual sera la ruta al archivo en el servidor*/
23: File archivo_server = new File(«c:/subidos/»+item.getName());
24: /*y lo escribimos en el servido*/
25: item.write(archivo_server);
26: out.print(«Nombre –> » + item.getName() );
27: out.print(» Tipo –> » + item.getContentType());
28: out.print(» tamaño –> » + (item.getSize()/1240)+ «KB»);
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:567)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:461)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
causa raíz
java.io.FileNotFoundException: c:\subidos\C:\Users\Proyecto\Desktop\Colegio\web\images\MARVIN.jpg (El nombre de archivo, el nombre de directorio o la sintaxis de la etiqueta del volumen no son correctos)
java.io.FileOutputStream.open(Native Method)
java.io.FileOutputStream.(FileOutputStream.java:212)
java.io.FileOutputStream.(FileOutputStream.java:165)
org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:439)
org.apache.jsp.subir_jsp._jspService(subir_jsp.java:92)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/7.0.22.
Andres el error ha sucedido a varias personar, en el comentario 83, 84, 101 y 102 se habla del mismo error
hola, oye acabo de probar tu codigo y me marca error dice The requested resource () is not available.
estoy utilizando netbeasn 7.0 gracias de antemano
oye ya resolvi el problema y el codigo funciona de maravilla graicas!!!
Julio cual era el error y como lo resolviste?
¡¡Buen tutorial!! Me funciona sin problemas. Ahora mi duda es: quiero calcular la velocidad de subida, pero para ello necesito obtener el tiempo que le cuesta al archivo subir al servidor. La velocidad de subida se obtendría dividiendo el tamaño del archivo (ese dato ya lo tengo, item.getSize()) entre el tiempo que le cuesta subir al servidor. Entonces, ¿cómo podría obtener ese tiempo?
He probado a hacer lo siguiente:
int contador = 0;
/* Y lo escribimos en el servidor*/
item.write(archivo_server);
contador++;
double v = (((item.getSize())/contador++)/100.0);
out.print(» Ruta: » + item.getName()); // Ruta donde se encuentra el archivo que hemos subido
out.print(» Tipo: » + item.getContentType());
out.print(» Tamaño: » + (item.getSize()/1240) + » Kb»);
out.print(«La velocidad de subida es de: «+ v +» Kbps»);
out.print(«»);
Pero no sé si ese es el valor correcto, si el tiempo está mal calculado poniendo ese contador ahí. Al ejecutar me funciona y me calcula la velocidad, pero no se si está bien calculado ese tiempo o no.
Ayuda xfaa!! Gracias!!
Buenos Dias Ingenio, es que tengo un input file, envio el formulario, pero no se como obtener la ruta del archivo del input…. me puede ayudar…
Gracias…
la ruta del archivo dependiendo del explorador es incluso temporal, no creo que saber la ruta al archivo en el cliente sea útil… incluso ni siquiera lo he intentado.
corre de lujooooo grx
como cambio la ruta C:/subidos por una ruta http del servidor….
aqui nadie contesta…
estuve enfermo unos 15 días pero ya regresé
que pena… ofrezco mis disculpas…
IngenioDS Que se MEjoro lo mas pronto…
es que quiero subir el archivo pero a hosting y en la ruta…
coloco la ruta «./subidos/»+getName(); pero me dice que el directorio no existe…
es que nunca he intentado subir un archivo a una url siempre lo he hecho a una ruta física en el disco duro. pero indagaré entre mis compañeros para ver quien sabe hacer eso
le agradezco… por que no he podido lograr hacerlo… tengo un acceso directo al proyecto en el hosting… y por mas direcciones que le de no lo he podido lograr…
hola..
super biien tu tuto solo que tengo un proyecto me pidieron subir la imagenes desde web a una bd..
prodrias mandarme este archivo para chekarlo te lo agradeceria!!
mortiz_tsu@hotmail.com
Hola una pregunta modifique un poco tu codigo , el chiste es que cuando quiero subir me archivo me dice acceso denegado si mepuedes ayudar te lo agradeceria
parece que es una cuestión de permisos más que de código
disculpa, me sucede lo mismo me da acceso denegado a la ruta, se agradeceria, me dijeras a que archivo hay que cambiarle el permiso para que funcione. saludos cordiales.
Es eso, tienes que darle permisos al usuario con que inicia tu tomcat para escribir en dicha ruta, o escribir en una ruta que sea pública
Hola, una preguntita. Estoy implementando tu código con Eclipse y Jboss y Struts 1. El problema es que cuando ejecuto esta línea -> List items = servlet_up.parseRequest(request); la lista queda vacía.
Leyendo vi que otros resolvieron colocando el atributo enctype=»MULTIPART/FORM-DATA» en el formulario, pero yo también lo tengo y nada, la lista queda vacía.
Con la librería FormFile de struts me funciona bien pero para un archivo porque probando con la subida de varios archivos la aplicación se comporta mal y de hecho me da timeout leyendo el MULTIPART.
Agradezco si alguien tiene idea de lo que pueda estar pasando con la lista que queda vacía 😦
Funciona perfecto IngenioDS muchas Gracias (y) ¿Sabes de algún servicio de Hosting que soporte JSP y Servlets, ya sea gratuito o de pago?
has probado GAE?
EXCELENTE tuto, funciona al 100% ya lo probé y funcionó sin problema, lo único que falta aclarar es el nombre correcto de las librerias a agregar y cómo agregarlas, pues quienes sepan menos que nosotros probablemente no lo entiendan. Pero muchas gracias, muy buen tuto.
olas! como podria despues de subir la imagen mostrarla en subir.jsp????
out.print(" < img src=' /subidos/"+item.getName()+"'&bt; ");
creo que agregando esta línea debe funcionar en local
mira yo desarrolle un proyecto similar al tuyo, pero me tope con un problema como el que comentaron arriba, efectivamente el archivo lo sube a una carpeta fuera del proyecto es decir ubicada en mis documentos o en C:, pero cuando la quiero mandar a llamar para presentarla en un slide de imágenes no me las muestra, leyendo los comentarios tu le respondiste esto a: Gck Wolf Jack
debes poner la ruta de los archivos que subes dentro de tu proyecto, y luego al leerla le quitas la parte que desees con un direccion=direccion.replaceFirst();
pero sinceramente no entendí, ojala pudieras ayudarme te lo agradecería mucho.
Buen diá, Queria pedirles de favor ayuda en un dificultad que tengo para subir imagenes con jsp.
Estoy trabajando con Netbeans IDE 7.0
Mi dificultas es que si puedo subir imagenes pero solo cuando le doy una ruta especifica del disco duro : String dirName = «D:\\Imagenes\\»;
Yo quiero q suba a un directorio que esta en la misma aplicacion web.
Gracias por su atencion.
IMGSFOLDER=application.getRealPath(«/shared/cargas/»);
Excelente aporte… tenia problemas al principio… pero mi problema era por las versiones de los jar, porque yo los descague desde los links que venian ahi, pero intente con los que venian en la carpeta del proyecto y ya con eso se ha solucionado.
Gracias
disculpa ya estando el sitio en linea para poner la ruta de la imagen ya no es c:/,,,, cual seria la url ay 😀
Hola buenas deseo subir una imagen y que al cerrar la aplicacion y luego al ejecutarla nuevamente la imagen se encuentre , el problema hasta el momento que logro subir imagenes y se me muestran pero al cerrar y volver a ejecutar ya no me salen y voy al build de la aplicacion y si esta la imagen utilizo netbeans 7.3 con apache 7 jsp si me puede ayudar se los agradecere mucho. spychirguin@yahoo.com
Buenos días:
Tengo un problema, quiero pasar por un post un fichero para subir y una variable. Si utilizo enctype=»multipart/form-data» me sube el fichero y la variable va null y si pongo enctype=»multipart/mixed» oenctype=»text/plain» el fichero no lo sube pero si me reconoce la variable. ¿como puedo hacer las dos cosas a la vez?
Muchas Gracias
Excelente post amigo, me ayudo bastante. Gracias!!
como subir un fileupload y un texto, lo que pasa es que trato de hacer una alta de usuarios pero no puedo hacer las dos cosas en el mismo codigo por que tengo que poner el multipart/form-data y los textos no los puedo mandar y si lo quito no puedo subir el fileupload
Hola muy bueno el tuto pero solo me funciona con el netbeans abierto, cuando lo subo a un servidor apache me da este error..
org.apache.jasper.JasperException: No se puede compilar la clase para JSP:
Ha tenido lugar un error en la línea: 12 en el archivo jsp: /subir.jsp
FileItemFactory cannot be resolved to a type
9:
10: <%
11: /*FileItemFactory es una interfaz para crear FileItem*/
12: FileItemFactory file_factory = new DiskFileItemFactory();
13:
14: /*ServletFileUpload esta clase convierte los input file a FileItem*/
15: ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
cual es solución?
Que tal. Tengo un pregunta en dado caso que quisiera que el directorio fuera dentro del proyecto, como es que escribo la direccion, sin marcar la ruta completa desde C:/ …../uploadFiles Lo he intentado y me marca error al decirme que no encuentra la ruta. Saludos y gracias.
Una pregunta despues de subir el archivo como podria ahcer para listarlo y poder descargarlo gracias