`
godsend_jin
  • 浏览: 41540 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

spring mvc 附件上传至腾讯云qcloud

阅读更多

简单记录主要是便于自己用,有需要的参考一下...

 

上传至腾讯云,相关文档参阅官方文档

 

附件为比较早的版本,自己修改过

 

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框架中实现文件上传功能是十分常见的需求之一。本文档将详细介绍如何在Spring MVC环境中配置并实现文件上传功能,包括...

    精通Spring MVC 4

    本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...

    Spring MVC jar包

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...

    spring mvc文件上传实现进度条

    在Spring MVC框架中,文件上传是一项常见的功能,而实现文件上传进度条则能提供更好的用户体验。这个场景通常涉及到前端的JavaScript或jQuery库(如jQuery File Upload)与后端的Spring MVC控制器之间的交互,以及...

    最全最经典spring-mvc教程

    Spring MVC 是一款强大的Java Web开发框架,用于构建高效、可维护和模块化的Web应用程序。它作为Spring框架的一部分,提供了一种优雅的方式来处理HTTP请求和响应,使得开发者可以专注于业务逻辑而不是底层实现。在这...

    Spring MVC 4.2.3

    Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...

    spring mvc 4.0

    Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。在Spring MVC 4.0版本中,它引入了许多改进和新特性,以提升开发效率和应用程序的性能。 1. **依赖注入**:Spring ...

    Spring.MVC-A.Tutorial-Spring.MVC学习指南 高清可复制版PDF

    Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这个教程“Spring MVC - A Tutorial”旨在帮助开发者深入理解和掌握Spring MVC的核心概念和...

    Mastering Spring MVC 4(2015.09)源码

    Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...

    Spring MVC 教程快速入门 深入分析

    Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,使用了IoC容器,支持RESTful风格的应用程序开发。Spring MVC通过分离模型(Model)、视图(View)和控制器(Controller)来简化Web开发...

    Spring MVC所需jar包

    6. **Apache Commons**:Spring MVC 开发中可能会用到 Apache Commons 的一些工具库,例如 `commons-logging.jar` 用于日志记录,`commons-fileupload.jar` 用于文件上传,`commons-lang3.jar` 提供了一些实用的 ...

    Spring MVC + Mybatis+Spring实现的个人博客系统

    这是一个基于Spring MVC、Mybatis和Spring框架实现的个人博客系统,涵盖了Web开发中的后端架构设计、数据库管理和前端展示等多个方面。以下将详细介绍这个系统的关键知识点: **1. Spring MVC** Spring MVC是Spring...

    spring mvc框架依赖全面jar

    Spring MVC 是一个基于 Java 的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所...

    spring mvc mybatis 整合源码,带数据库脚本,带详细注释

    Spring MVC 和 MyBatis 是两个在Java Web 开发中广泛使用的框架。Spring MVC 作为Spring框架的一部分,负责处理HTTP请求并转发到相应的业务逻辑,而MyBatis则是一个轻量级的持久层框架,用于简化数据库操作。整合这...

    Spring MVC使用Demo

    Spring MVC是Spring框架的一个核心模块,专用于构建Web应用程序。这个"Spring MVC使用Demo"提供了实践操作,帮助开发者深入理解Spring MVC的开发环境配置、注解的使用以及工作原理。 首先,Spring MVC的设计模式...

    Spring mvc 教程

    - **Servlet 3.0 下的 MultipartResolver**:对于 Servlet 3.0 及以上版本,Spring MVC 提供了内置的文件上传支持。 - **处理表单中的文件上传**:通过控制器方法来接收和处理上传的文件。 #### 异常处理 ...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    理解并熟练掌握Spring MVC、Spring和Hibernate的整合,对于任何Java后端开发者来说都是至关重要的技能。 在观看11.mp4时,你可能会看到如何处理复杂业务逻辑的示例,如何解决实际开发中的问题,或者如何优化和调试...

Global site tag (gtag.js) - Google Analytics