(十五)Servlet教程——Servlet文件上传

        JSP和HTML标签一起使用,来允许用户把文件上传到服务器。

        首先我们需要创建一个前端界面,创建上传文件表单时,需要注意以下几点:

(1) 表单的method属性必须设置为POST方法, 不能使用GET方法。

(2) 表单enctype属性应该设置为multipart/form-data。

(3) 表单action属性应设置为对应的Servlet,Servlet包含处理上传文件的代码。

(4) 使用<input/>标签上传单个文件,属性type设置为file,上传多个文件需要添加多个input标签。

        前端我们使用html页面来实现,首先新建一个upload.html,该html的内容如下

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>文件上传</title>

</head>

<body>

<!--文件上传表单-->

<form method="post" enctype="multipart/form-data" action="uploadServlet">

    姓名:<input type="text" name="uname"><br>

    文件:<input type="file" name="myfile"><br>

    <button>提交</button>

</form>

</body>

</html>

其中button的默认类型是提交类型,type=”submit”。在该表单中普通的表单项使用type=”text”,附件类型的表单项使用type=”file”。不要忘了设置表单元素的name属性,表单提交一定要设置表单元素的name属性,否则后台无法接收数据。

接下来需要准备接收表单数据的Servlet。首先创建一个UploadServlet,该Servlet的具体代码如下

@WebServlet("/uploadServlet")

@MultipartConfig //如果是文件上传,需要设置该注解

public class UploadServlet extends HttpServlet {

    @Override

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("文件上传...");

        //设置请求的编码格式

        request.setCharacterEncoding("UTF-8");

        //获取普通表单项

        //此处uname和表单元素的name属性相对应

        String uname = request.getParameter("uname");

        System.out.println("uname: " + uname);

        //获取Part对象,Servlet将multipart/form-data的POST请求封装成Part对象

        Part part = request.getPart("myfile");

        //通过Part对象得到上传的文件名

        String fileName = part.getSubmittedFileName();

        System.out.println("上传文件名:" + fileName);

        //得到文件的存放路径

        String filePath = request.getServletContext().getRealPath("/");

        //保存文件到制定目录

        part.write(filePath + "/" + fileName);

    }

}

使用@MultipartConfig 注解将一个Servlet标记为支持文件上传。

启动该Web应用,在浏览器地址栏中输入URL: http://localhost:8080/s001/upload.html

 

 在“姓名”输入框中输入测试文本,并选择一个文件进行上传,在下图所示路径下可以看到上传的文件

 

相关推荐

  1. Servlet 文件

    2024-05-01 01:52:02       25 阅读
  2. ()Servlet教程——Servlet是什么

    2024-05-01 01:52:02       36 阅读
  3. HTML批量文件3—Servlet批量文件处理FileUpLoad

    2024-05-01 01:52:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-01 01:52:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-01 01:52:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-01 01:52:02       87 阅读
  4. Python语言-面向对象

    2024-05-01 01:52:02       96 阅读

热门阅读

  1. GET 和 POST 请求方式的区别

    2024-05-01 01:52:02       26 阅读
  2. 商城数据库88张表结构(十五)

    2024-05-01 01:52:02       33 阅读
  3. Nginx知识点汇总表格总结

    2024-05-01 01:52:02       26 阅读
  4. 华纳云:服务器DDoS攻击有哪些类型?

    2024-05-01 01:52:02       32 阅读
  5. 算法与数据结构 数组

    2024-05-01 01:52:02       33 阅读
  6. CIEEFEN 品牌香水

    2024-05-01 01:52:02       41 阅读
  7. Redis知识点汇总表格总结

    2024-05-01 01:52:02       30 阅读
  8. ArrayList为什么要实现RandomAccess接口

    2024-05-01 01:52:02       28 阅读
  9. 跨语言摘要CLS近期论文研究总结(一)

    2024-05-01 01:52:02       30 阅读
  10. 升级cmake

    2024-05-01 01:52:02       30 阅读