Cómo cargar y mostrar imágenes en Spring MVC
lt;property?name="uploadTempDir"?value="/tmp"?
lt;property?name="uploadTempDir"?value="/tmp "?--?TempDir?--gt;
lt;property?name="maxUploadSize"?value="10485760"/gt;?--?10M?--gt;
lt;/beangt;
(2) Formulario de carga de archivos y página de visualización de resultados fileupload.jsp:lt;@?page?language="java"?contentType="text/html;?charset ="UTF-8"
lt;property?name="maxUploadSize"?value="10485760"/gt;?UTF-8"
pageEncoding="UTF-8" gt;
lt;@taglib?prefix="mvc"?uri=".zifangsky.controller;
importar?java.io.p>importar?java.io.IOException ;
¿importar?javax.servlet.zifangsky.controller;
?
importar?java.io.IOException;
¿importar? javax.servlet.zifangsky.UploadController.model.User;
importar?cn.zifangsky.utils.StringUtile;
@Controller
¿clase?pública?UploadController ?{
@RequestMapping(valor?=?" /formulario")
public?ModelAndView?form()?{
ModelAndView?modelAndView?=? new?ModelAndView("fileupload",?"usuario",?new?User());
return?modelAndView;
}
@RequestMapping( value?=?"/upload",?method?=?RequestMethod.POST)
public?ModelAndView?@RequestParam("file")?MultipartFile?tmpFile,?HttpServletRequest?request)?{ p>
ModelAndView?{
//Obtener la ruta física
String?targetDirectory?=?request.getSession().getServletContext().getRealPath("/uploads " );
Cadena?tmpFileName?=?tmpFile.getOriginalFile
name();?//?Nombre del archivo cargado
int?dot?= ?tmpFileName.lastIndexOf('.')
String?ext?= ?"" ; /Sufijo de archivo
if((dot?gt;? -1)?amp;amp;?(dot?lt;?(tmpFileName.length()?-?1))))?{
text?=?tmpFileName.substring(dot? ?1);
}
//No admite otros formatos de archivo
if?("png".equalsIgnoreCase(ext)?|?" jpg".equalsIgnoreCase(ext)?|?" gif".equalsIgnoreCase(ext))?{
//Renombrar archivo de carga nombre
String?targetFileName?=?StringUtile.renameFileName(tmpFileName);
//Guardar nuevo archivo
Archivo?target?=?new ?File (targetDirectory,?targetFileName);
intentar?Guardar archivo
FileUtils.copyInputStreamToFile(tmpFile.getInputStream(),?target);
}? /p>
e.printStackTrace();
}
¿Usuario?u?=?new?User();
setUserName( user.getUserName());
u.setLogoSrc( request.getContextPath()? ?"/uploads/"? ?targetFileName);
modelAndView.addObject("u ", ?u);
}
retorno?modelAndView
}
retorno?modelAndView
}
}
En el método de carga anterior, para recibir el archivo cargado, utilicé una variable de tipo MultipartFile para recibir el archivo temporal cargado. Para cambiar el nombre del archivo, Llamé a un método renameFileName, cuyos detalles son los siguientes: /**
?*?File rename
?*/
public?static ? String?renameFileName(String?fileName)?{
String?formatDate?=?new?SimpleDateFormat("yyyMMddHHmmss").format(new?Date());?//?Cadena de tiempo actual p>
int?random?=?new?Random().nextInt(10000);
String?extension?=?fileName.substring(fileName.lastIndexOf(".")) ;? ///?FileSuffix
retorno?formatoD
comió? ?random? ?extensión;
}
Nota: El modelo utilizado anteriormente - User.java: package?//?UserName
privado? //dirección de avatar
public?String?getUserName()?{
return?userName;
}
public?void ?setUserName(String?userName)?{
this.userName?=?userName;
}
public?void?setUserName(String?userName)? {
return?logoSrc;
}
public?void?setLogoSrc(String?logoSrc)?{
this.logoSrc? =?logoSrc;
}
}
Hasta ahora
El efecto es el siguiente:
( PD: puramente escrito a mano, espero ser adoptado)