SpringMVC多文件上傳實例

cm54 9年前發布 | 5K 次閱讀 Java SpringMVC

后臺Conroller

    import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.Date;
import java.util.Iterator;

import javax.servlet.http.HttpServletRequest;    
import javax.servlet.http.HttpServletResponse;    
import javax.swing.filechooser.FileNameExtensionFilter;    

import org.springframework.stereotype.Controller;    
import org.springframework.web.bind.annotation.RequestMapping;    
import org.springframework.web.bind.annotation.RequestMethod;    
import org.springframework.web.bind.annotation.RequestParam;    
import org.springframework.web.multipart.MultipartFile;    
import org.springframework.web.multipart.MultipartHttpServletRequest;    
import org.springframework.web.multipart.commons.CommonsMultipartFile;    
import org.springframework.web.multipart.commons.CommonsMultipartResolver;    
import org.springframework.web.servlet.ModelAndView;    


import com.tgb.web.controller.entity.User;    

@Controller    
@RequestMapping("/file")    
public class UploadController {     


    @RequestMapping("/upload"   )    
    public String addUser(@RequestParam("file") CommonsMultipartFile[] files,HttpServletRequest request){    

        for(int i = 0;i<files.length;i++){    
            System.out.println("fileName---------->" + files[i].getOriginalFilename());    

            if(!files[i].isEmpty()){    
                int pre = (int) System.currentTimeMillis();    
                try {    
                    //拿到輸出流,同時重命名上傳的文件    
                    FileOutputStream os = new FileOutputStream("H:/" + new Date().getTime() + files[i].getOriginalFilename());    
                    //拿到上傳文件的輸入流    
                    FileInputStream in = (FileInputStream) files[i].getInputStream();    

                    //以寫字節的方式寫文件    
                    int b = 0;    
                    while((b=in.read()) != -1){    
                        os.write(b);    
                    }    
                    os.flush();    
                    os.close();    
                    in.close();    
                    int finaltime = (int) System.currentTimeMillis();    
                    System.out.println(finaltime - pre);    

                } catch (Exception e) {    
                    e.printStackTrace();    
                    System.out.println("上傳出錯");    
                }    
        }    
        }    
        return "/success";    
    }    


    @RequestMapping("/upload2"  )    
    public String upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException {    
        //創建一個通用的多部分解析器    
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());    
        //判斷 request 是否有文件上傳,即多部分請求    
        if(multipartResolver.isMultipart(request)){    
            //轉換成多部分request      
            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;    
            //取得request中的所有文件名    
            Iterator<String> iter = multiRequest.getFileNames();    
            while(iter.hasNext()){    
                //記錄上傳過程起始時的時間,用來計算上傳時間    
                int pre = (int) System.currentTimeMillis();    
                //取得上傳文件    
                MultipartFile file = multiRequest.getFile(iter.next());    
                if(file != null){    
                    //取得當前上傳文件的文件名稱    
                    String myFileName = file.getOriginalFilename();    
                    //如果名稱不為“”,說明該文件存在,否則說明該文件不存在    
                    if(myFileName.trim() !=""){    
                        System.out.println(myFileName);    
                        //重命名上傳后的文件名    
                        String fileName = "demoUpload" + file.getOriginalFilename();    
                        //定義上傳路徑    
                        String path = "H:/" + fileName;    
                        File localFile = new File(path);    
                        file.transferTo(localFile);    
                    }    
                }    
                //記錄上傳該文件后的時間    
                int finaltime = (int) System.currentTimeMillis();    
                System.out.println(finaltime - pre);    
            }    

        }    
        return "/success";    
    }    

    @RequestMapping("/toUpload" )     
    public String toUpload() {    

        return "/upload";    
    }    

}    </pre> 


前端頁面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
<html>
<head>
<script type="text/javascript" src="/js/<strong>jquery-1.7.2.js</strong>"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
i = 1;
j = 1;
$(document).ready(function(){

        $("#btn_add1").click(function(){    
            document.getElementById("newUpload1").innerHTML+='<div id="div_'+i+'"><input  name="file" type="file"  /><input type="button" value="刪除"  onclick="del_1('+i+')"/></div>';    
              i = i + 1;    
        });    

        $("#btn_add2").click(function(){    
            document.getElementById("newUpload2").innerHTML+='<div id="div_'+j+'"><input  name="file_'+j+'" type="file"  /><input type="button" value="刪除"  onclick="del_2('+j+')"/></div>';    
              j = j + 1;    
        });    
    });    

    function del_1(o){    
     document.getElementById("newUpload1").removeChild(document.getElementById("div_"+o));    
    }    

    function del_2(o){    
         document.getElementById("newUpload2").removeChild(document.getElementById("div_"+o));    
    }    

</script>    
</head>    
<body>    

     <h1>springMVC字節流輸入上傳文件</h1>     
    <form name="userForm1" action="/springMVC7/file/upload" <strong>enctype="multipart/form-data"</strong> method="post">    
        <div id="newUpload1">    
            <input type="file" name="file">    
        </div>    

        <input type="button" id="btn_add1" value="增加一行" >    
        <input type="submit" value="上傳" >    
    </form>     
    <br>    
    <br>    
    <hr align="left" width="60%" color="#FF0000" size="3">    
    <br>    
    <br>    
     <h1>springMVC包裝類上傳文件</h1>     
    <form name="userForm2" action="/springMVC7/file/upload2" <strong>enctype="multipart/form-data"</strong> method="post"">    
        <div id="newUpload2">    
            <input type="file" name="file">    
        </div>    
        <input type="button" id="btn_add2" value="增加一行" >    
        <input type="submit" value="上傳" >    


    </form>     
</body>    
</html>    </pre> 


 本文由用戶 cm54 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!