zoukankan      html  css  js  c++  java
  • 上传下载文件, 同时部署在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;  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;  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>";
    
  • 相关阅读:
    5.0、Android Studio调试你的应用
    4.4、Android Studio在命令行运行Gradle
    4.3、Android Studio突破64K方法限制
    4.2、Android Studio压缩你的代码和资源
    4.1、Android Stuido配置你的Build Variant
    【java多线程系列】java中的volatile的内存语义
    【java多线程系列】java内存模型与指令重排序
    4.0、Android Studio配置你的构建
    HashMap
    zk常用命令
  • 原文地址:https://www.cnblogs.com/wujixing/p/5984893.html
Copyright © 2011-2022 走看看