jquery.uploadify+spring mvc实现上传图片

简介:


一、前端页面

1.下载jquery.uploadify

去uploadify官网(http://www.uploadify.com/download/ )下载压缩包,解压后放在如下路径:

Image(1)

2.html结构

form表单的上传控件部分:

1
2
3
4
5
6
7
8
< div  class="control-group">
                 < label  class="control-label" for="coverImage">代表图</ label >
                 < div  class="controls">
                     < input  type="hidden" th:field="*{coverImage}">
                     < input  class="input-file" id="fileInput" type="file">
                     < img  id="previewCoverImage" src="#">
                 </ div >
             </ div >

  

3.页面引入uploadify

1
2
< link  rel="stylesheet" th:href="@{/static/uploadify/uploadify.css}”>
< script  type="text/javascript" th:src="@{/static/uploadify/jquery.uploadify.js}"></ script >

  

4.自定义上传代码

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
<script th:inline= "javascript" >
         /*<![CDATA[*/
         $(document).ready( function  () {
             $( "#fileInput" ).uploadify(
                 {
                     'swf' /*[[@{/static/uploadify/uploadify.swf}]]*/ ,
                     'uploader' /*[[@{/upload/uploadCoverImage}]]*/ //后台action地址
                     'queueID' 'fileQueue' ,
                     'auto' true ,
                     'multi' false ,
                     'buttonText' '上传图片' ,
                     'fileObjName' 'pic' //对应action中的参数字段名称
                     'width' : 70,
                     'height' : 20,
                     'onUploadSuccess' function  (file, data, response) {
                         if  (data !=  null ) {
                             $( "#coverImage" ).val(data);  //赋值给hidden控件,便于提交form表单
                             $( "#previewCoverImage" ).attr( "src" ,data);  //复制给img控件用来预览
                         }
                     }
                 });
         });
         /*]]>*/
 
     </script>

  

二、站点配置

1.调整springmvc-servlet.xml文件,添加配置支持文件上传

1
2
<!-- 支持上传文件 -->
<bean id= "multipartResolver"  class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" />

  

2.添加maven依赖

1
2
3
4
5
<dependency>
     <groupId>commons-fileupload</groupId>
     <artifactId>commons-fileupload</artifactId>
     <version> 1.3 . 1 </version>
</dependency>

  

三、后台代码

1.controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Controller
@RequestMapping ( "/upload" )
public  class  UploadController {
 
     @RequestMapping (value =  "/uploadCoverImage" , method = RequestMethod.POST)
     @ResponseBody
     public  String uploadCoverImage( @RequestParam ( "pic" ) CommonsMultipartFile pic, HttpServletRequest req, HttpServletResponse response)  throws  IOException {
         //上传文件信息
         String fileName = pic.getOriginalFilename();
         String fileType = fileName.split( "[.]" )[ 1 ];
 
         //生成文件信息
         String filePath = req.getSession().getServletContext().getRealPath(FilePathConst.COVER_IMAGE_UPLOAD);
         String uuid = UUID.randomUUID().toString().replace( "-" "" );
         String uuidFileName = uuid + fileName;
 
         //保存文件
         File f =  new  File(filePath +  "/"  + uuid +  "."  + fileType);
         FileUtils.uploadFile(pic.getInputStream(), uuidFileName, filePath);
 
         return  SiteConst.SITE_DOMAIN + FilePathConst.COVER_IMAGE_UPLOAD + uuidFileName;
     }
}

  

2.FileUtils工具类

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public  class  FileUtils {
     public  static  void  uploadFile(InputStream is, String fileName, String filePath) {
         FileOutputStream fos =  null ;
         BufferedOutputStream bos =  null ;
         BufferedInputStream bis =  null ;
         File file =  new  File(filePath);
         if  (!file.exists()) {
             file.mkdirs();
         }
 
         File f =  new  File(filePath +  "/"  + fileName);
         try  {
             bis =  new  BufferedInputStream(is);
             fos =  new  FileOutputStream(f);
             bos =  new  BufferedOutputStream(fos);
 
             byte [] bt =  new  byte [ 4096 ];
             int  len;
             while  ((len = bis.read(bt)) >  0 ) {
                 bos.write(bt,  0 , len);
             }
 
         catch  (Exception e) {
             e.printStackTrace();
         finally  {
             try  {
                 if  ( null  != bos) {
                     bos.close();
                     bos =  null ;
                 }
 
                 if  ( null  != fos) {
                     fos.close();
                     fos =  null ;
                 }
                 if  ( null  != is) {
                     is.close();
                     is =  null ;
                 }
 
                 if  ( null  != bis) {
                     bis.close();
                     bis =  null ;
                 }
             catch  (Exception e) {
                 e.printStackTrace();
             }
         }
     }
}

  


    本文转自 陈敬(Cathy) 博客园博客,原文链接:http://www.cnblogs.com/janes/p/7611980.html,如需转载请自行联系原作者



相关文章
|
26天前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
1月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
52 2
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
90 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
2月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
3月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
3月前
|
XML JSON 数据库
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
这篇文章详细介绍了RESTful的概念、实现方式,以及如何在SpringMVC中使用HiddenHttpMethodFilter来处理PUT和DELETE请求,并通过具体代码案例分析了RESTful的使用。
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
|
3月前
|
前端开发 应用服务中间件 数据库
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
这篇文章通过一个具体的项目案例,详细讲解了如何使用SpringMVC、Thymeleaf、Bootstrap以及RESTful风格接口来实现员工信息的增删改查功能。文章提供了项目结构、配置文件、控制器、数据访问对象、实体类和前端页面的完整源码,并展示了实现效果的截图。项目的目的是锻炼使用RESTful风格的接口开发,虽然数据是假数据并未连接数据库,但提供了一个很好的实践机会。文章最后强调了这一章节主要是为了练习RESTful,其他方面暂不考虑。
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
|
3月前
|
JSON 前端开发 Java
Spring MVC返回JSON数据
综上所述,Spring MVC提供了灵活、强大的方式来支持返回JSON数据,从直接使用 `@ResponseBody`及 `@RestController`注解,到通过配置消息转换器和异常处理器,开发人员可以根据具体需求选择合适的实现方式。
155 4
|
3月前
|
XML 前端开发 Java
Spring MVC接收param参数(直接接收、注解接收、集合接收、实体接收)
Spring MVC提供了灵活多样的参数接收方式,可以满足各种不同场景下的需求。了解并熟练运用这些基本的参数接收技巧,可以使得Web应用的开发更加方便、高效。同时,也是提高代码的可读性和维护性的关键所在。在实际开发过程中,根据具体需求选择最合适的参数接收方式,能够有效提升开发效率和应用性能。
118 3