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="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";
        }


    }

  

 

参考

http://smilease.iteye.com/blog/1693898

http://www.cnblogs.com/fjsnail/p/3491033.html

 

转载于:https://www.cnblogs.com/sword-successful/p/6601474.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值