一、简介
使用form表单进行需要为form添加enctype="multipart/form-data" 属性,除此之外还需要将表单的提交方法改成post,如下 method="post"。
二、示例
1、表单文件上传
网页代码如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 </head> 5 <body> 6 <form action="${pageContext.request.contextPath}/file/upload.action" method="post" enctype="multipart/form-data"> 7 <div id="contentTable" style="border: 0px;"> 8 <h1 class="title" style="font-size: 15px; border-bottom: 1px solid #DFE3E6;">导入数据</h1> 9 <table width="80%">10 <tr>11 <td width="20%"align="right">12 选择要上传的文件 13 </td> 14 <td width="70%" id="name_h" title="" style="text-align: center;"> 15 <input type="file" name="xlsfile" id="xlsfile" />16 </td>17 </tr>18 </table>19 <div id="activityTable">20 <input id="btnSave" type="submit" value="导 入" />21 </div>22 </div>23 </form>24 </body>25 </html>
后端上传处理代码:
1 /** 2 *使用springmvc处理文件上传 3 */ 4 @RequestMapping("upload") 5 @ResponseBody 6 public boolean upload(HttpServletRequest request, HttpServletResponse response, HttpSession session) throws UnsupportedEncodingException { 7 String path = request.getSession().getServletContext().getRealPath(""); 8 Calendar calendar = Calendar.getInstance(); 9 calendar.setTime(new Date());10 request.setCharacterEncoding("UTF-8");11 path = String.format("%s%s%s\\%s\\%s\\%s", path, "upload", "file", calendar.get(calendar.YEAR),12 calendar.get(calendar.MONTH), calendar.get(calendar.DAY_OF_MONTH));13 File filepath = new File(path);14 if (!filepath.exists()) {15 filepath.mkdirs();16 }17 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;18 获得文件19 MultipartFile multipartFile = multipartRequest.getFile("xlsfile");20 OutputStream os = null;21 InputStream is = null;22 File uploadFile = null;23 try {24 is = multipartFile.getInputStream();25 uploadFile = new File(filepath, System.currentTimeMillis() + ".xls");26 os = new FileOutputStream(uploadFile);27 IOUtils.copy(is, os);//使用commons-io组件进行文件流的处理28 os.flush(); 29 } catch (IOException e) {30 e.printStackTrace();31 return false;32 }finally{33 IOUtils.closeQuietly(os);34 IOUtils.closeQuietly(is);35 }36 return true;37 }
2、文件下载
1 /** 2 *使用springmvc进行文件下载处理 3 */ 4 @RequestMapping({ "/template" }) 5 public void downloadTemplate(HttpServletRequest request, HttpServletResponse response) 6 throws UnsupportedEncodingException { 7 String path = request.getSession().getServletContext().getRealPath(""); 8 String filename = "模板文件.xls"; 9 File file = new File(path + "\\file\\templagte\\" + filename);10 String userAgent = request.getHeader("User-Agent");11 byte[] bytes = userAgent.contains("MSIE") ? filename.getBytes() : filename.getBytes("UTF-8"); // fileName.getBytes("UTF-8")处理safari的乱码问题12 String fileName = new String(bytes, "ISO-8859-1"); 13 // 设置输出的格式14 response.setContentType("multipart/form-data");15 response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);16 17 InputStream inStream = null;18 try {19 inStream = new FileInputStream(file);20 IOUtils.copy(inStream, response.getOutputStream());//使用commons-io组件进行文件流的处理21 } catch (IOException e) {22 e.printStackTrace();23 }finally{24 IOUtils.closeQuietly(inStream);25 }
原标题:表单文件上传与文件下载
关键词:上传