`
godsend_jin
  • 浏览: 39991 次
  • 性别: 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 框架下的文件上传,代码有web.xml配置 ,spring的配置 ,以及控制器代码等

    精通Spring MVC 4

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

    spring mvc文件上传实现进度条

    spring mvc文件上传,通过监听器实现进度条

    Spring MVC 文件上传下载 后端 - Java.zip

    Spring MVC 文件上传下载 后端 - Java.zip

    spring mvc 官方文档

    本文详细介绍spring MVC的原理和开发心得体会。

    精通Spring MVC 4 中文

    精通Spring MVC 4 中文

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

    [免费]Spring MVC学习指南(高清)

    全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,...

    Spring MVC所需jar包

    Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包

    大优惠 Spring MVC学习指南(第2版)2017.pdf

    全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,...

    Spring MVC jar包

    关于构建Sping MVC的Jar包,包括Sping2.5.6和Hibernate3.6.8

    Spring MVC+MyBatis开发从入门到项目实战

    《Spring MVC+MyBatis开发从入门到项目实战》分为4篇。第1篇是Java开发环境的搭建,包括JDK的下载与安装、环境变量的配置、MyEclipse的下载与基本配置。第2篇是MyBatis技术入门,包括剖析JDBC的弊端、MyBatis的背景...

    Spring MVC 入门实例

    首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...

    spring mvc源代码

    spring mvc4.1.4 源代码 spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码

    Spring MVC 4.2.3

    Spring mvc jar包

    spring MVC数据绑定大全

    spring MVC数据绑定 含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便 本人最开始也是这么认为 经过一段...

    Servlet JSP和Spring MVC初学指南

    Servlet JSP和Spring MVC初学指南

Global site tag (gtag.js) - Google Analytics