SpringMVC + jquery.uploadify实现上传文件功能

 更新时间:2017年06月06日 09:43:49   作者:garfieldzf  
文件上传是很多项目都会使用到的功能,SpringMVC当然也提供了这个功能。不过小编不建议在项目中通过form表单来提交文件上传,这样做的局限性很大。下面这篇文章主要介绍了利用SpringMVC + jquery.uploadify实现上传文件功能的相关资料,需要的朋友可以参考下。

前言

以前用Asp.net MVC+uploadify上传文件,最近学习SpringMVC,所以就用SpringMVC+uploadify做个上传文件的demo。

刚开始用form表单的方式提交,在Controller Action中用@RequestParam MultipartFile file就能拿到上传文件信息。后我直接使用uploadify的方式上传,接口没有做任何调整,上传的过程中报http400, 客户端的请求不符合接口的要求,表单post提交时报文参数是以Form Data方式,而换成uploadify时参数格式则是request payload的方式,所以把接口改写成MultipartServletRequest的方式

开发环境

SpringMVC4、Uploadify、

上传文件的话还需要下载 commons-fileupload ,同时还会下载common-io、common-logging

项目结构

普通表单上传

<form action="/User/index" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="upload"/>
</form>
@RequestMapping("upload")

 public @ResponseBody String upload(@RequestParam MultipartFile file) throws IOException {

  

 String path =request.getSession().getServletContext().getRealPath("upload");

 File file=new File(path,file.getOriginalFilename());

 

 file.transferTo(file); //保存文件

 

 return "/success"; 

 } 

uploadify上传文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

 <title>Index</title>

 <link href="/2sc/uploadify/uploadify.css" rel="external nofollow" rel="stylesheet" type="text/css" />

 <script src="/2sc/js/jquery-1.4.2.js" type="text/javascript"></script>

 <script src="/2sc/uploadify/jquery.uploadify.js" type="text/javascript"></script>

 <style type="text/css">

 #fileQueue {position: absolute;bottom: 0;right: 0;}

 </style>

</head>

<body>

 spring mvc 上传文件

 <div id="fileQueue">

 </div>

 <input type="file" name="uploadify" id="uploadify" />

 

<script type="text/javascript">

 $(function () {

 $("#uploadify").uploadify({

  'method':'post',

  //指定swf文件

  'swf': '/2sc/uploadify/uploadify.swf',

  //后台处理的页面

  'uploader': '/User/upload',

  //按钮显示的文字

  'buttonText': '上传图片',

  //显示的高度和宽度,默认 height 30;width 120

  //'height': 15,

  //'width': 80,

  //上传文件的类型 默认为所有文件 'All Files' ; '*.*'

  //在浏览窗口底部的文件类型下拉菜单中显示的文本

  'fileTypeDesc': 'Image Files',

  //允许上传的文件后缀

  'fileTypeExts': '*.gif; *.jpg; *.png',

  //发送给后台的其他参数通过formData指定

  'formData': { 'someKey': 'someValue'},

  //上传文件页面中,你想要用来作为文件队列的元素的id, 默认为false 自动生成, 不带#

  'queueID': 'fileQueue',

  //选择文件后自动上传

  'auto': true,

  //设置为true将允许多文件上传

  'multi': true

 });

 });

</script>

</body>

</html> 

接口

@RequestMapping(value = "/upload",method = RequestMethod.POST)

 public @ResponseBody String upload(HttpServletRequest request, HttpServletResponse response){

 

 String path =request.getSession().getServletContext().getRealPath("upload");

 

 MultipartHttpServletRequest multipartHttpServletRequest=(MultipartHttpServletRequest)request;

 

 Map<String,MultipartFile> map = multipartHttpServletRequest.getFileMap();

 

 System.out.println("path:"+path);

 

 File file=new File(path);

 if(!file.exists()){

  file.mkdirs();

 }

 

 try{

 

  for(Map.Entry<String,MultipartFile> entity:map.entrySet()){

  MultipartFile multipartFile=entity.getValue();

  File ff = new File(path,multipartFile.getOriginalFilename());

  multipartFile.transferTo(ff);

  }

 

  return "success";

 }catch (Exception e){

  e.printStackTrace();

  return "error";

 }

 

 

 } 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • SpringBoot内置tomcat参数调优的实现

    SpringBoot内置tomcat参数调优的实现

    springboot内置了tomcat, 并给我们设置了默认参数, 我们怎么样修改springboot内置的tomcat参数,本文就详细的来介绍一下,感兴趣的可以了解一下
    2023-09-09
  • Intellij IDEA导入eclipse web项目的操作步骤详解

    Intellij IDEA导入eclipse web项目的操作步骤详解

    Eclipse当中的web项目都会有这两个文件,但是idea当中应该是没有的,所以导入会出现兼容问题,但是本篇文章会教大家如何导入,并且导入过后还能使用tomcat运行,需要的朋友可以参考下
    2023-08-08
  • Java中IO流解析及代码实例

    Java中IO流解析及代码实例

    下面小编就为大家带来一篇关于Java中的IO流总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-07-07
  • Java封装数组之动态数组实现方法详解

    Java封装数组之动态数组实现方法详解

    这篇文章主要介绍了Java封装数组之动态数组实现方法,结合实例形式详细分析了java动态数组的实现原理、操作步骤与相关注意事项,需要的朋友可以参考下
    2020-03-03
  • Java线程之间数据传递的实现示例(4种)

    Java线程之间数据传递的实现示例(4种)

    我们经常会遇到父子线程数据传递(非调用参数)的场景,本文主要介绍了Java线程之间数据传递的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Java 字符终端上获取输入三种的方式分享

    Java 字符终端上获取输入三种的方式分享

    这篇文章主要介绍了Java 字符终端上获取输入三种的方式,有需要的朋友可以参考一下
    2013-11-11
  • Spring Data JPA 实现多表关联查询的示例代码

    Spring Data JPA 实现多表关联查询的示例代码

    多表查询在spring data jpa中有两种实现方式,第一种是利用hibernate的级联查询来实现,第二种是创建一个结果集的接口来接收连表查询后的结果,这里介绍第二种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Spring中的BeanFactory与FactoryBean区别详解

    Spring中的BeanFactory与FactoryBean区别详解

    这篇文章主要介绍了Spring中的BeanFactory与FactoryBean区别详解,BeanFactory是一个接口,它是spring中的一个工厂,FactoryBean也是一个接口,实现了3个方法,通过重写其中方法自定义生成bean,需要的朋友可以参考下
    2024-01-01
  • Java实现布隆过滤器的方法步骤

    Java实现布隆过滤器的方法步骤

    布隆过滤器是可以用于判断一个元素是不是在一个集合里,并且相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。下面这篇文章主要给大家介绍了关于Java实现布隆过滤器的相关资料,需要的朋友可以参考下
    2018-11-11
  • java如何导出insert语句并生成sql脚本

    java如何导出insert语句并生成sql脚本

    这篇文章主要介绍了java导出insert语句并生成sql脚本的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论