简单记录主要是便于自己用,有需要的参考一下...
上传至腾讯云,相关文档参阅官方文档
附件为比较早的版本,自己修改过
1、实体bean --用multipartFile接收
public class UploadForm {
//上传的图片
private MultipartFile PhotoFile;
public MultipartFile getPhotoFile() {
return PhotoFile;
}
public void setPhotoFile(MultipartFile photoFile) {
PhotoFile = photoFile;
}
}
2、controller
@RequestMapping(value="/uploadImage")
@ResponseBody
public String uploadImage(UploadForm uploadForm,Model model ){
return uploadService.uploadImage(uploadForm,model);
}
3、service
@Transactional
public String uploadImage(UploadForm uploadForm,Model model ){
//图片类型
String imageType = siteForm.getImageType();
MultipartFile uploadFile = siteForm.getPhotoFile();
UploadResult result = PicUploadUtil.picUploadByFileAstrict(uploadFile, 1920, 572, 0, new String[]{"jpg","jpeg","png"}, false);
if(result.result != 0)
return "2";
//将图片信息保存到数据库
CtAttachment attachmentExample = new CtAttachment();
attachmentExample.setUserId(SecurityUserHelper.getCurrentUser().getPersonId());
attachmentExample.setAttCode(imageType);
attachmentExample.setAttName(uploadFile.getOriginalFilename());
attachmentExample.setAttUrl(result.download_url);
this.ctAttachmentDAO.insertNotNull(attachmentExample);
return result.download_url;
}
4、PicUploadUtil
/**
* 图片上传
* @param file
* @param width 宽度限制 <=0表示不校验
* @param height 高度限制 <=0表示不校验
* @param size 大小限制 <=0表示不校验
* @param suffix 后缀限制 null或length<0表示不校验
* @param needCompress 是否需要压缩
* @return
*/
public static UploadResult picUploadByFileAstrict(MultipartFile file,int width,int height,long size,String [] suffix,boolean needCompress) {
UploadResult result = new UploadResult();
try {
String imgName = file.getOriginalFilename();
String imgSuffix = imgName.substring(imgName.lastIndexOf(".") + 1);
//不用添加后缀
String imgNameTemp = UUID.randomUUID().toString();
File fileTemp = new File(picTempDir + imgNameTemp);
//这里只使用路径,而不创建真实文件,所有也不用考虑删除文件的问题
if(fileTemp.exists()){
log.error("target file is exists , create fail !");
result.result = -1;
return result;
}
byte[] advImageBytes = null;
InputStream advImageStream = null;
advImageStream = file.getInputStream();
advImageBytes = FileCopyUtils.copyToByteArray(advImageStream);
FileCopyUtils.copy(advImageBytes, fileTemp);
advImageStream.close();
BufferedImage buff = ImageIO.read(fileTemp);
if((width > 0 ? buff.getWidth() > width : false) || (height > 0 ? buff.getHeight() > height : false) ||
(size > 0 ?file.getSize() > size : false) || ((null != suffix&&suffix.length>0)?!ArrayUtils.contains(suffix, imgSuffix):false)){
//TODO 如果需要压缩,则直接压缩到指定大小,不用校验
/*//返回之前先删除添加的文件,
fileTemp.delete();*/
result.result = 1;
return result;
}
PicCloud pc = new PicCloud(APP_ID, SECRET_ID, SECRET_KEY);
int ret = pc.UploadByFile("", fileTemp, result);
if(ret == 0){
result.result = 0;
}else{
result.result = -1;
}
return result;
} catch (Exception e) {
log.error(e);
}
return null;
}
5、jsp页面
<div id="updateBox" style="display:none;">
<input style="border:0;width:190px;" type="file" id="PhotoFile" name="PhotoFile"/>
<button class="leeer" type="button" onclick="addPhoto(<c:out value='${model.id }'/>);">上传图片</button>
<!--<button class="leeer" onclick="updateImg(1);return false;">关闭</button>
--></div>
6、spring-mvc 配置
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="10000000"/>
</bean>
<!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException -->
<!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到error_fileupload.jsp页面 -->
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop>
</props>
</property>
</bean>
相关推荐
### Spring MVC 附件上传知识点详解 #### 一、Spring MVC框架下的文件上传概述 在Spring MVC框架中实现文件上传功能是十分常见的需求之一。本文档将详细介绍如何在Spring MVC环境中配置并实现文件上传功能,包括...
本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...
在Spring MVC框架中,文件上传是一项常见的功能,而实现文件上传进度条则能提供更好的用户体验。这个场景通常涉及到前端的JavaScript或jQuery库(如jQuery File Upload)与后端的Spring MVC控制器之间的交互,以及...
Spring MVC 是一款强大的Java Web开发框架,用于构建高效、可维护和模块化的Web应用程序。它作为Spring框架的一部分,提供了一种优雅的方式来处理HTTP请求和响应,使得开发者可以专注于业务逻辑而不是底层实现。在这...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。在Spring MVC 4.0版本中,它引入了许多改进和新特性,以提升开发效率和应用程序的性能。 1. **依赖注入**:Spring ...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这个教程“Spring MVC - A Tutorial”旨在帮助开发者深入理解和掌握Spring MVC的核心概念和...
Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...
Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,使用了IoC容器,支持RESTful风格的应用程序开发。Spring MVC通过分离模型(Model)、视图(View)和控制器(Controller)来简化Web开发...
6. **Apache Commons**:Spring MVC 开发中可能会用到 Apache Commons 的一些工具库,例如 `commons-logging.jar` 用于日志记录,`commons-fileupload.jar` 用于文件上传,`commons-lang3.jar` 提供了一些实用的 ...
这是一个基于Spring MVC、Mybatis和Spring框架实现的个人博客系统,涵盖了Web开发中的后端架构设计、数据库管理和前端展示等多个方面。以下将详细介绍这个系统的关键知识点: **1. Spring MVC** Spring MVC是Spring...
Spring MVC 是一个基于 Java 的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所...
Spring MVC 和 MyBatis 是两个在Java Web 开发中广泛使用的框架。Spring MVC 作为Spring框架的一部分,负责处理HTTP请求并转发到相应的业务逻辑,而MyBatis则是一个轻量级的持久层框架,用于简化数据库操作。整合这...
Spring MVC是Spring框架的一个核心模块,专用于构建Web应用程序。这个"Spring MVC使用Demo"提供了实践操作,帮助开发者深入理解Spring MVC的开发环境配置、注解的使用以及工作原理。 首先,Spring MVC的设计模式...
- **Servlet 3.0 下的 MultipartResolver**:对于 Servlet 3.0 及以上版本,Spring MVC 提供了内置的文件上传支持。 - **处理表单中的文件上传**:通过控制器方法来接收和处理上传的文件。 #### 异常处理 ...
理解并熟练掌握Spring MVC、Spring和Hibernate的整合,对于任何Java后端开发者来说都是至关重要的技能。 在观看11.mp4时,你可能会看到如何处理复杂业务逻辑的示例,如何解决实际开发中的问题,或者如何优化和调试...