Se realiza con un Struct normal, pero con ciertas características que deberá tener el formulario (Página jsp), el ActionForm y el Action.
Veamos un ejemplo básico (en cursiva lo importate):
El archivo.jsp (formulario)
<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html>
<head>
<title>Nueva Instalacion Deportiva</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META name="GENERATOR" content="IBM WebSphere Studio">
</head>
<body>
<p class="Titulo" align="center">Subir/Cambiar </p>
<CENTER>
<TABLE class="CampoFormulario" width="450" height="304" border="0" cellpadding="4" cellspacing="4">
<html:form enctype="multipart/form-data" action="/UploadFotoPath">
<tr valign="top"><td height="4"> <FONT color="#FF0000"><html:errors/></FONT></td></tr>
<tr valign="top"><td align="center" height="4">
<table width="60%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr class="CampoFormulario">
<td><div align="center">Imagen </div></td>
<td><div align="center">
<html:file property="theFile" />
</div></td>
</tr>
<tr class="CampoFormulario" align="center">
<td colspan="2"> <html:submit value="Subir"/>
</td>
</tr>
</table>
</td></tr>
</html:form>
</TABLE>
</CENTER>
<p> </p>
</body>
</html:html>
El UploadForm.java (ActionForm)
package com.ti.rid.web.instalacionDeportiva.Struts;
import org.apache.struts.upload.FormFile;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UploadFotoForm extends ActionForm {
/**
* El archivo que el usuario quiere subir
*/
protected FormFile theFile;
/**
* El identificador de la instalación deportiva
*/
protected String ID_INSTALACION;
/**
* Recupera la representacion del fichero que el usuario sube
*/
public FormFile getTheFile() {
return theFile;
}
/**
* Introduce la representacion del fichero que el usuario sube
*/
public void setTheFile(FormFile theFile) {
this .theFile = theFile;
}
/**
* Recupera el identificador de la instalacion
*/
public String getId_instalacion() {
return ID_INSTALACION;
}
/**
* Introduce el identificador de la instalación
*/
public void setId_instalacion(String aString) {
this .ID_INSTALACION = aString;
}
/*
* Comprueba que el archivo cumple los parámetros que pedimos de tamaño y extensión
*/
public ActionErrors validate( ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
//Controlamos el tamaño del archivo
if (!((theFile.getFileSize() != 0) && (theFile.getFileSize() < utils.constantes.ConstantesRID.MAX_SIZE)))
{
errors.add( "error.tamanio" , new ActionError( "error.tamanio" ));
}
//Recuperamos el tipo de archivo
if (!theFile.getContentType().equalsIgnoreCase(utils.constantes.ConstantesRID.FILE_TYPE))
{
errors.add( "error.email" , new ActionError( "error.email" ));
}
return errors;
} //validate
} //class UploadFotoForm
El UploadAction.java (Action)
package com.ti.rid.web.instalacionDeportiva.Struts;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.File;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.upload.FormFile;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ForwardingActionForward;
//import com.ti.rid.types.*;
import com.ti.rid.proc.*;
public class UploadFotoAction extends Action {
public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
if (form instanceof UploadFotoForm) {
UploadFotoForm theForm = (UploadFotoForm) form;
String fileNewName = theForm.getId_instalacion()+ ".jpg" ; //El nombre con el que queremos guardar el archivo
FormFile file = theForm.getTheFile(); //Recuperamos la representación del archivo
//ubicación y nombre del archivo a guardar
String path = utils.constantes.ConstantesRID.FILE_PATH+fileNewName;
//Controlamos las condiciones para subirlo
try {
// se comprueba que la ruta exista
File f = new File(path);
if (makeSureDirectoryExists(parent(f))) {
// Se graba en la ruta la foto;
FileOutputStream out = new FileOutputStream(f);
out.write(file.getFileData());
out.flush();
out.close();
//indicamos que la intalación tiene ya foto asociada
PInstalacionesDeportivas myPIDeportivas = new PInstalacionesDeportivas();
myPIDeportivas.setFoto( new Integer(theForm.getId_instalacion()), true );
} //if
} //try
catch (Exception ex) {
System.out.println ( "Lanzada excepcion en UploadFotoAction:" +ex);
return null ;
}
//Destruimos el archivo temporal
file.destroy();
System.out.print( "Subido el archivo deportiva" );
//Retornamos y continuamos en
return mapping.findForward( "alta_ok" );
} //if
//Nunca sucederá en este ejemplo
return null ;
} //perform
/**
* Devuelve la ruta padre del subdirectorio actual
* @param File --> El archivo del cual se quiere sacar su directorio o directorio padre
* @return File --> Crea un archivo con la ruta del directorio padre
*/
private File parent(File f) {
String dirname = f.getParent();
if (dirname == null ) {
return new File(File.separator);
}
return new File(dirname);
}
/**
* Crear un subdirectorio si este no existe
* @param dir --> El path del archivo (dirección + nombre)
* @return True -> Existe o se ha creado False --> No existe y no se ha podido crear
*/
private boolean makeSureDirectoryExists(File dir) {
if (!dir.exists()) {
if (makeSureDirectoryExists(parent(dir)))
dir.mkdir();
else
return false ;
}
return true ;
}
}
/**
* Devuelve la ruta padre del subdirectorio actual
* @param File --> El archivo del cual se quiere sacar su directorio o directorio padre
* @return File --> Crea un archivo con la ruta del directorio padre
*/
private File parent(File f) {
String dirname = f.getParent();
if (dirname == null ) {
return new File(File.separator);
}
return new File(dirname);
}
/**
* Crear un subdirectorio si este no existe
* @param dir --> El path del archivo (dirección + nombre)
* @return True -> Existe o se ha creado False --> No existe y no se ha podido crear */
private boolean makeSureDirectoryExists(File dir) {
if (!dir.exists()) {
if (makeSureDirectoryExists(parent(dir)))
dir.mkdir();
else
return false ;
}
return true ;
}
}
admin @ 14:47 | comentarios (0) | Links Permanentes
<< November 2024 >> | ||||||
---|---|---|---|---|---|---|
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
archivos
November - 2013