首页 > Web开发 > 详细

文件上传

时间:2020-03-24 22:18:47      阅读:81      评论:0      收藏:0      [点我收藏+]

1、 要有一个 form 标签, method=post 请求
2、 form 标签的 encType 属性值必须为 multipart/form-data 值
3、 在 form 标签中使用 input type=file 添加上传的文件
4、 编写服务器代码(Servlet 程序) 接收, 处理上传的数据。
其中:encType=multipart/form-data 表示提交的数据, 以多段(每一个表单项一个数据段) 的形式进行拼接, 然后以二进制流的形式发送给服务器
5.图解

技术分享图片

代码:

jsp 

 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 2 <html>
 3 <head>
 4     <title>上传</title>
 5 </head>
 6 <body>
 7 <form action="uploadServlet" method="post" enctype="multipart/form-data" >
 8     姓名:<input type="text" name="username"><br/>
 9     文件:<input type="file" name="file"><br/>
10     <input type="submit" value="submit">
11 </form>
12 </body>
13 </html>

 

servlet

 1 package NCU;
 2 
 3 import org.apache.commons.fileupload.FileItem;
 4 import org.apache.commons.fileupload.FileItemFactory;
 5 import org.apache.commons.fileupload.FileUploadException;
 6 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 7 import org.apache.commons.fileupload.servlet.ServletFileUpload;
 8 
 9 import javax.servlet.ServletException;
10 import javax.servlet.annotation.WebServlet;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14 import java.io.File;
15 import java.io.IOException;
16 import java.util.List;
17 
18 @WebServlet("/uploadServlet")
19 public class UploadServlet extends HttpServlet {
20     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
21         if (ServletFileUpload.isMultipartContent(request)) {
22             //创建 FileItemFactory 工厂实现类
23             FileItemFactory fileItemFactory = new DiskFileItemFactory();
24             // 创建用于解析上传数据的工具类 ServletFileUpload 类
25             ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
26             //防止文件名乱码
27             servletFileUpload.setHeaderEncoding("UTF-8");
28             try {
29                 // 解析上传的数据, 得到每一个表单项 FileItem
30                 List<FileItem> list = servletFileUpload.parseRequest(request);
31                 for (FileItem fileItem : list) {
32                     if (fileItem.isFormField()) {
33                         System.out.println("name值: " + fileItem.getFieldName());
34                         System.out.println("value值: " + fileItem.getString("UTF-8"));
35                     } else {
36                         System.out.println("name值: " + fileItem.getFieldName());
37                         //获取文件名
38                         System.out.println("文件名: " + fileItem.getName());
39                         //把文件上传的位置
40                         fileItem.write(new File("D:\\" + fileItem.getName()));
41                     }
42                 }
43             } catch (Exception e) {
44                 e.printStackTrace();
45             }
46         }
47 
48     }
49 
50 }

 

文件上传

原文:https://www.cnblogs.com/0error0warning/p/12561938.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!