使用Servlet3.0如何实现一个上传文件功能

  介绍

这篇文章将为大家详细讲解有关使用Servlet3.0如何实现一个上传文件功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强>一、使用Servlet3.0提供的API实现文件上传

1.1,编写上传页面

& lt; % @  page 语言=癹ava", pageEncoding=癠TF-8" %比;   & lt; ! DOCTYPE  HTML>   & lt; html>   ,& lt; head>   & lt;才能title> Servlet3.0实现文件上传& lt;/title>   ,& lt;/head>   ,   ,& lt; body>   ,,,& lt; fieldset>   ,,,,,& lt; legend>   ,,,,,,,上传单个文件   ,,,,,& lt;/legend>   ,,,,,& lt; !——,文件上传时必须要设置表单的enctype=岸嗖糠?form-data"——比;   ,,,,,& lt; form  action=? {pageContext.request.contextPath}/UploadServlet"   ,,,,,,,方法=皃ost", enctype=岸嗖糠?form-data"比;   ,,,,,,,上传文件:   ,,,,,,,& lt; input 类型=癴ile", name=癴ile"比;   ,,,,,,,& lt; br>   ,,,,,,,& lt; input 类型=皊ubmit",价值=https://www.yisu.com/zixun/鄙洗?>   <人力资源/>   <自定义字段>   <传奇>   上传多个文件         <表单动作=" $ {pageContext.request.contextPath}/UploadServlet”   method=" post " enctype="多部分/格式">   上传文件:      
  上传文件:      
   package  me.gacl.web.controller;      import  java.io.File;   import  java.io.IOException;   import  java.io.PrintWriter;   import  java.util.Collection;      import  javax.servlet.ServletException;   import  javax.servlet.annotation.MultipartConfig;   import  javax.servlet.annotation.WebServlet;   import  javax.servlet.http.HttpServlet;   import  javax.servlet.http.HttpServletRequest;   import  javax.servlet.http.HttpServletResponse;   import  javax.servlet.http.Part;//使用@WebServlet配置UploadServlet的访问路径   @WebServlet (name=癠ploadServlet" urlpattern=?UploadServlet")//使用注解@MultipartConfig将一个Servlet标识为支持文件上传   @MultipartConfig//标识Servlet支持文件上传   public  class  UploadServlet  extends  HttpServlet  {      public 才能;void  doGet (HttpServletRequest 请求,HttpServletResponse 响应)   ,,,,,throws  ServletException, IOException  {   ,,,,,,request.setCharacterEncoding (“utf-8");   ,,,,,response.setCharacterEncoding (“utf-8");   ,,,,,response.setContentType (“text/html; charset=utf-8");   ,,,,,//存储路径   ,,,,,String  savePath =, request.getServletContext () .getRealPath (“/web - inf/uploadFile");   ,,,,,//获取上传的文件集合   ,,,,,Collection, parts =, request.getParts ();   ,,,,,//上传单个文件   ,,,,,if  (parts.size ()==1), {   ,,,,,,,,//Servlet3.0将多部分/格式的帖子请求封装成部分,通过对一部分上传的文件进行操作。   ,,,,,,,//Part  Part =,部分[0];//从上传的文件集合中获取一部分对象   ,,,,,,,Part  Part =, request.getPart (“file");//通过表单文件控件(& lt; input 类型=癴ile", name=癴ile"祝辞)的名字直接获取一部分对象   ,,,,,,,//Servlet3没有提供直接获取文件名的方法,需要从请求头中解析出来   ,,,,,,,//获取请求头,请求头的格式:格式;,name=癴ile",,文件名=皊nmp4j——api.zip"   ,,,,,,,String  header =, part.getHeader (“content-disposition");   ,,,,,,,//获取文件名   ,,,,,,,String  fileName =, getFileName(头);   ,,,,,,,//把文件写到指定路径   ,,,,,,,part.write (savePath + File.separator +文件名);   ,,,,,}else  {   ,,,,,,,//一次性上传多个文件   ,,,,,,,for  (Part  Part :部分),{//循环处理上传的文件   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用Servlet3.0如何实现一个上传文件功能