zoukankan      html  css  js  c++  java
  • 表单文件上传与文件下载

    一、简介

      使用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="导&nbsp;入" />
    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=" + URLEncoder.encode(fileName, "UTF-8"));
    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         }
  • 相关阅读:
    CentOS 7下安装Python3.6
    Django项目运行时出现self.status.split(' ',1)[0], self.bytes_sent,ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。
    pycharm激活码
    CentOS7环境下安装VIM8 并支撑python3
    CentOS7下源码安装mysql
    formset和modelformset
    ModelForm中定制datetimepicker插件
    ModelForm--定制样式
    Django--models字段参数 limit_choices_to
    复习--类的继承
  • 原文地址:https://www.cnblogs.com/always-online/p/4476314.html
Copyright © 2011-2022 走看看