SpringMVC使用MultipartFile 实现异步上传文件

目的是实现异步上传

1.添加pom依赖

添加pom依赖,因为用的ajax,数据需要转成json的格式进行传输,所以还有加入一个JSON jar包:

        <dependency>
            <groupId>commons-fileuploadgroupId>
            <artifactId>commons-fileuploadartifactId>
            <version>1.3.1version>
        dependency>

        <dependency>
            <groupId>commons-logginggroupId>
            <artifactId>commons-loggingartifactId>
            <version>1.2version>
        dependency>

        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.1.37version>
        dependency>

2.修改配置文件

applicationContext.xml里面需要加上:

id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8">property>
        <property name="maxUploadSize" value="5400000">property>
    

3.前端页面上

前端页面:

    <form  id="uploadForm" name="uploadForm"
        enctype="multipart/form-data">
<input name="messageContent" value="多个参数的情况下">
            <label>文件label> <input type="file" name="file">
            <button class="btn" type="button" id="doSave">提交button>
    form>
body>
html>

需要加入的JS:

<script type="text/javascript" src="js/jquery-1.6.2.min.js">script>  
<script type="text/javascript" src="js/jquery-ui.min.js">script>  
<script type="text/javascript" src="js/jquery.form.js">script>  

JS方法:

<script>
    $(function() {
        $("#doSave")
                .click(
                        function() {
                            $("#uploadForm")
                                    .ajaxSubmit(
                                            {
                                type : 'post',
                                url : "/tmpInfo/method2.do",

        //data:  //注意只要是写在表单里面的,都不需要加这个属性。在controller中可以根据@RequestParam String str获取到属性值。    
    contentType : "application/x-www-form-urlencoded; charset=utf-8",
        success: function(data) {
                  //接受到的data还只是一个字符串,需要转成json对象
                  var obj = JSON.parse(data);
                  if(obj.flag==true){
                    alert("上传成功");
              }else{
                  alert("error");
              }
                },
                error: function (data)//服务器响应失败处理函数
                {
                    alert("出错");
                }  
              });
    });
    });  

controller代码:

   @RequestMapping("/method2")  
        @ResponseBody
        public String method2(@RequestParam MultipartFile file,
                @RequestParam String messageContent  ) { 
                //多个参数的话只要多个@RequestParam即可,注意参数名要和表单里面的属性名一致
         JSONObject json =new JSONObject();
         System.out.println(messageContent);
            String orgiginalFileName = "";  
            int m =new Random().nextInt(100)+10;
            System.out.println("m="+m);
            String path="D:/"+m+"b.txt";
            try {  
                File newFile =new File(path);
                file.transferTo(newFile);

                String fileName = file.getName();  
                InputStream inputStream = file.getInputStream();  
                String content = file.getContentType();  
                orgiginalFileName = file.getOriginalFilename();  
               System.out.println("fileName: "+fileName+", inputStream: "+ inputStream  
                            +"\r\n content: "+content+", orgiginalFileName: ="+ orgiginalFileName  
                            +"\r\n projectName: ");      
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
            json.put("flag", true);
            json.put("message", "success");
            System.out.println(json.toJSONString());
            return json.toJSONString();  
        }  

你可能感兴趣的:(spring)