表单文件上传与文件下载

简介: 一、简介   使用form表单进行需要为form添加enctype="multipart/form-data" 属性,除此之外还需要将表单的提交方法改成post,如下 method="post"。 二、示例   1、表单文件上传   网页代码如下: 1 DOCTYPE html> ...

一、简介

  使用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         }
目录
相关文章
C#文件上传
C#文件上传
67 0
|
1月前
|
存储 PHP 文件存储
32 单文件上传
路老师分享PHP文件上传教程,涵盖配置php.ini、使用$_FILES变量和move_uploaded_file()函数等关键步骤,帮助你轻松实现单文件上传功能。纯干货,技术知识分享。
34 1
|
1月前
|
前端开发 PHP
33 多文件上传及文件下载
路老师分享PHP语言知识,涵盖多文件上传和文件下载功能。多文件上传只需将表单中的文件域名称改为数组形式,文件下载则通过`header()`函数实现强制下载。详细代码示例和操作步骤,助你轻松掌握PHP核心技术。
32 1
|
1月前
|
Java
smartupload文件上传!
使用 `smartupload.jar` 实现文件上传和下载。首先将 `smartupload.jar` 添加到项目中,然后创建上传页面,确保表单使用 `POST` 方法并设置 `enctype=&quot;multipart/form-data&quot;`。接着在服务器端通过 `SmartUpload` 对象处理文件上传,保存文件到指定目录,并获取表单中的其他数据。最后,实现文件下载功能,设置响应头以触发浏览器下载文件。
54 0
|
7月前
|
JSON 数据格式
文件上传~~
文件上传~~
49 0
|
4月前
|
前端开发 JavaScript 数据库
多个文件上传
多个文件上传
35 0
|
JavaScript 前端开发 移动开发
浅谈文件上传
浅谈文件上传
浅谈文件上传
|
存储 移动开发 JavaScript
|
安全 应用服务中间件 PHP
[SUCTF 2019]CheckIn(文件上传)
[SUCTF 2019]CheckIn(文件上传)
198 0