1、创建servlet项目
2、编写前端页面(web下创建一个html)
<body> <!-- 文件上传表单 1. 表单提交类型 method="post" 2. 表单类型 enctype="multipart/form-data" 3. 表单元素类型 文件域设置name属性值 --> <form method="post" action="uploadServlet" enctype="multipart/form-data"> 姓名:<input type="text" name="uname" > <br> 文件:<input type="file" name="myfile" > <br> <button type="submit">提交</button> </form> </body>
后端代码实现
@WebServlet("/uploadServlet") @MultipartConfig//如果是文件上传表单一定加这个注解 //Servlet将multipart/farm-data 的post请求封装为Part对象,通过Part对上传的文件进行操作 public class UploadServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置请求编码的格式 request.setCharacterEncoding("UTF-8"); //获取普通的表单项(文本框) String uname = request.getParameter("uname");//"uname"代表的是文本框的name属性值 //通过getPart(name)方法获取Part对象(name代表的是页面中file文件域的name属性值) System.out.println("uname"+uname); Part part = request.getPart("myfile"); //通过Part对象,获取上传的文件名 String fileName= part.getSubmittedFileName(); System.out.println("上传文件名"+fileName); //得到文件上传需要存放的路径(得到项目存放的真实路径) String realPath = request.getServletContext().getRealPath("/"); System.out.println("文件存放的路径:"+realPath); //将文件上传到指定位置 part.write(realPath+"/"+fileName); } }
分析:
上传一个文件,发送的请求会封装为一个Part对象
首先获取Part对象,获取前端页面上传文件设置好的名字,封装在Part里面;
其次选择好要上传的文件之后,获取到上传的文件名;
然后再得到这个文件要上传到哪个地方;
最后就是将文件上传到指定位置就可以了。
输出结果