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

Como subir imagen al servidor y guardar la ruta relativa en la base de datos

Estas en el tema de Como subir imagen al servidor y guardar la ruta relativa en la base de datos en el foro de Java en Foros del Web. Hola, estoy montando una aplicación para la gestión de contenido(texto+imagenes) con una base de datos; estoy subiendo la imagen al servidor(en una carpeta, "imagenes", de ...
  #1 (permalink)  
Antiguo 04/02/2010, 03:26
 
Fecha de Ingreso: noviembre-2009
Mensajes: 31
Antigüedad: 15 años
Puntos: 1
Como subir imagen al servidor y guardar la ruta relativa en la base de datos

Hola, estoy montando una aplicación para la gestión de contenido(texto+imagenes) con una base de datos; estoy subiendo la imagen al servidor(en una carpeta, "imagenes", de mi proyecto en eclipse) usando commons.fileupload.jar, pero el servlet que me lo hace me lo guarda en una ruta virtual o no.
Ahora bien, en la base de datos, ademas de los campos de texto que tenga el registro(autor, fecha, nombre_partitura), habrá otro de texto más llamado partitura(almacenará ruta relativa de la imagen(=una partitura));
- Estructura de mi proyecto:
Aplicacion
---Aplicacion.xml
---WebContent/
------imagenes
--------->aquí irán mis imagenes<
---------WEB-INF/
------------lib/
------------classes/libreria/ContextListener.java, PartiturasBD.java, Partitura.java
------------web.xml
------formularios.jsp



- Scriplet para subir archivo al servidor
<%
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {

} else {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
Iterator itr = items.iterator();
while (itr.hasNext())
{
FileItem item = (FileItem) itr.next();
try {
String itemName = item.getName();
File savedFile = new File(config.getServletContext().getRealPath("/")+"/WebContent/imagenes/"+itemName);
item.write(savedFile);
} catch (Exception e) {
e.printStackTrace();
}
}

}
%>
La inserccion en la base de datos de los campos "autor, fecha, nombre_partitura" se hace mediante el request.getParameter("nombre_campo"), pero para guardar la ruta relativa en el campo partitura, no se como insertarlo en la base de datos.
Soy un poco nuevo en esto...sino me he explicado bien...os puedo dar más información sobre el codigo.
Gracias de antemano.

Última edición por gioropu; 04/02/2010 a las 03:32
  #2 (permalink)  
Antiguo 04/02/2010, 10:33
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 21 años, 2 meses
Puntos: 4
Respuesta: Como subir imagen al servidor y guardar la ruta relativa en la base de dat

Creo que te respondi hace unos días atras en el Foro de Java...

http://www.forosdelweb.com/f45/inser...-datos-774391/
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #3 (permalink)  
Antiguo 08/02/2010, 04:48
 
Fecha de Ingreso: noviembre-2009
Mensajes: 31
Antigüedad: 15 años
Puntos: 1
[SOLUCIONADO] Como subir imagen al servidor y guardar la ruta relativa en BD

Así me qda el codigo java y funciona,
<%

boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {

} else {

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}

Iterator itr = items.iterator();
while (itr.hasNext())
{
FileItem item = (FileItem) itr.next();

if(item.isFormField())
{
String nombrecampo=item.getFieldName();
String valorcampo=item.getString();
if(nombrecampo.equals("autor"))
{
CampoAutor=valorcampo;
}
else
if(nombrecampo.equals("fecha"))
{
CampoFecha=valorcampo;
}
else
if(nombrecampo.equals("notacion"))
{
CampoNotacion=valorcampo;
}
else
if(nombrecampo.equals("nombre"))
{
CampoNombre=valorcampo;
}

}
else
{
try {

itemName = item.getName();
File savedFile = new File(config.getServletContext().getRealPath("/")+"/imagenes/"+itemName);
item.write(savedFile);


} catch (Exception e) {
e.printStackTrace();
}
}
}

}
%>
Tenia el problema de que como lo estaba haciendo no funcionaba bien, no me insertaba los datos en la BD; ahora si me sube la imagen al servidor y me guarda los datos del formulario mas la ruta de la imagen en la base de datos.
Ahora bien, agradecería mucho si alguien me puede orientar en el siguiente paso q me gustaría realizar, se trataría de subir varias imagenes a la vez, como maximo 10, por ejemplo; no se de que forma lo podría si meter el codigo anterior en un bucle, ocuparia mucho codigo y no sería tan eficiente.
De antemano gracias
  #4 (permalink)  
Antiguo 20/05/2010, 13:03
 
Fecha de Ingreso: abril-2010
Mensajes: 36
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Como subir imagen al servidor y guardar la ruta relativa en la base de dat

He probado este código y me da errores en:
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
y en:
items = upload.parseRequest(request);
¿por qué? He añadido las siguientes librerías:
<%@page import = "java.net.*"%>
<%@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 = "javax.servlet.http.HttpServletRequest.*"%>
Pero no me funciona, ¿acaso los métodos isMultipartContent(request) y upload.parseRequest(request) los tengo que implementar yo? ¿Hay que poner algo más en el jsp que contien el formulario /aparte de enctype="MULTIPART/FORM-DATA"?
Estoy muy perdio, necesito una ayudita por fa.
  #5 (permalink)  
Antiguo 04/06/2010, 03:50
 
Fecha de Ingreso: noviembre-2009
Mensajes: 31
Antigüedad: 15 años
Puntos: 1
Respuesta: Como subir imagen al servidor y guardar la ruta relativa en la base de dat

He cargado las siguientes:
<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.io.File" %>
<%@ page import="org.apache.commons.fileupload.servlet.Serv letFileUpload"%>
<%@ page import="org.apache.commons.fileupload.disk.DiskFil eItemFactory"%>
<%@ page import="org.apache.commons.fileupload.*"%>
Con ellas no he tenido ningun problema; pero para ello he utilizado los siguientes .jar:
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
No se si tu estás utilizando otros y debido a compatibilidad te están fallando.
  #6 (permalink)  
Antiguo 05/11/2014, 12:53
 
Fecha de Ingreso: octubre-2014
Mensajes: 11
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Como subir imagen al servidor y guardar la ruta relativa en la base de dat

como le hiciste para mandar los datos a un modelo para que los inserte a la base de datos

Etiquetas: relativa, ruta, subir, servidores
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 22:47.