前端上传
<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>";