上传下载文件, 同时部署在webapps下, 而不是项目下,防止重新部署tomcat, 上传文件消失

前端上传

<a href='javascript:upload("+data[i].id+")' title='Upload Report'> <img src='${pageContext.request.contextPath}/FlatUI/img/edit2.png'   width=18px height=18px/></a>

js函数

function upload(id){
		 var winObj = window.open ("/portal/trip/toUpload?id="+id, "newwindow", "height=700, width=800, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no, top=50,left=1100");
		 var loop = setInterval(function() {       
		 if(winObj.closed) {      
				clearInterval(loop);      
				 window.location.reload();
		 }      
		}, 1); 				 
 }

 controller

@RequestMapping("/toUpload")
	public String toUpload(Long id, HttpServletRequest request){
          request.setAttribute("id",id); return "/tripController/toUpload"; }

前台toUpload.jsp

	   <form name="fileForm" action="/portal/trip/upload" method="post" enctype="multipart/form-data">
	    	<input type="hidden" name="id" id="id" value="${id }">
	   		<font size="2" face="Arial" color="#004779">Select: </font> <input type="file" name="file"  style="color:#95a5a6; padding-left:5px;border-radius:5px;  width:500px; height:28px; vertical-align:middle;">
	   		<input type="submit" value="Upload" style="color:#2c3e50;font-size:12px; font-weight:bold; border-radius:5px; vertical-align:middle;height:30px;  width:60px; ">
	   	
	   </form>

 controller upload函数

@RequestMapping(value = "/upload", method = RequestMethod.POST)  
	public String upload(@RequestParam("file") MultipartFile image, Long id,HttpServletRequest request, HttpServletResponse response) throws IllegalStateException, IOException{
		// 转型为MultipartHttpRequest  
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;  
        // 根据前台的name名称得到上传的文件  
        MultipartFile file = multipartRequest.getFile("file");  
        // 获得文件名:  
        String realFileName = file.getOriginalFilename();  
        // 获取路径  
        String ctxPath = request.getSession().getServletContext().getRealPath("/").substring(0, request.getSession().getServletContext().getRealPath("/").lastIndexOf(request.getContextPath().replace("/", "")));

        File dirPath = new File(ctxPath+File.separator+"upload"+File.separator+"trip"+File.separator);
        System.out.println("路径" + dirPath);  
        /*String ctxPath = request.getSession().getServletContext()  
          		 .getRealPath("/download/trip/")  
                   + "/" ; 
        System.out.println("路径" + ctxPath);  
        // 创建文件  
        File dirPath = new File(ctxPath);  */
        if (!dirPath.exists()) {  
            dirPath.mkdir();  
        }  
        else{
            System.out.println("文件夹已经存在");
        }
        File uploadFile = new File(dirPath +File.separator+ realFileName);  
        FileCopyUtils.copy(file.getBytes(), uploadFile);  
        request.setAttribute("files", loadFiles(request));  
        
        tripService.updateById(id,"filename",realFileName);
        tripService.updateById(id,"ip",request.getRemoteHost());
        request.setAttribute("ip", request.getRemoteHost());
        //List<String> a = loadFiles(request);
		return "/tripController/success"; 
	}
public List<String> loadFiles(HttpServletRequest request) { List<String> files = new ArrayList<String>(); String ctxPath = request.getSession().getServletContext().getRealPath("/").substring(0, request.getSession().getServletContext().getRealPath("/").lastIndexOf(request.getContextPath().replace("/", ""))); File file = new File(ctxPath+File.separator+"upload"+File.separator+"trip"+File.separator); if (file.exists()) { File[] fs = file.listFiles(); String fname = null; for (File f : fs) { if (f.isFile()) { fname=f.getName(); files.add(fname); } } } return files; }
@RequestMapping("/download/{fileName:.*}") public void download(@PathVariable("fileName") String fileName, HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("text/html;charset=utf-8"); java.io.BufferedInputStream bis = null; java.io.BufferedOutputStream bos = null; String ctxPath = request.getSession().getServletContext().getRealPath("/").substring(0, request.getSession().getServletContext().getRealPath("/").lastIndexOf(request.getContextPath().replace("/", "")))+File.separator+"upload"+File.separator+"trip"+File.separator; String downLoadPath = ctxPath + fileName; System.out.println(downLoadPath); try { long fileLength = new File(downLoadPath).length(); response.setContentType("application/x-msdownload;"); response.setHeader("Content-disposition", "attachment; filename=" +java.net.URLEncoder.encode(fileName, "UTF-8").replace("+","%20")); // + new String(fileName.getBytes("ISO8859-1"), "utf-8")); response.setHeader("Content-Length", String.valueOf(fileLength)); bis = new BufferedInputStream(new FileInputStream(downLoadPath)); bos = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } } catch (Exception e) { e.printStackTrace(); } finally { if (bis != null) bis.close(); if (bos != null) bos.close(); } }

 success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
    <title></title>
  </head>  
  <body>
	    <font size="4" face="Arial" color="#004779"><strong>Upload Success!</strong></font>
	    <hr>
	    <font size="2" face="Arial" color="#004779"><strong>File List:</strong>
	    <c:forEach var="month" items="${files}">  
	        <li><a href="/portal/trip/download/${month}">${month}</a>     </li>  
	    </c:forEach> 
	    </font> 
  		<hr><br>  
<%-- 		 <a href="${pageContext.request.contextPath}/index.jsp">返回</a>  --%>
  </body>
</html>

 下载

if(data[i].filename==null)
	str+="<td align='center' bordercolor='#DEDEDE'></td>";
else
	str+="<td align='center' bordercolor='#DEDEDE'><a href='/portal/trip/download/"+data[i].filename+"' title='Business Trip Materials Download'><img src='${pageContext.request.contextPath}/FlatUI/img/link.png' width=15px height=15px/></a></td>";

 

posted @ 2016-10-21 15:47  wujixing909  阅读(1297)  评论(0编辑  收藏  举报