【精选】【JavaWeb】Servlet实现上传和下载文件的功能 您所在的位置:网站首页 servlet部署文件的文件目录 【精选】【JavaWeb】Servlet实现上传和下载文件的功能

【精选】【JavaWeb】Servlet实现上传和下载文件的功能

2023-10-30 16:20| 来源: 网络整理| 查看: 265

Servlet实现上传和下载文件的功能 一、上传功能jsp页面Servlet的方法实现 二、下载功能的实现准备下载文件夹以及相关设置jsp页面Servlet的方法实现 源码提供页面展示工程文件提供

一、上传功能 jsp页面

步骤:

文件上传 1.准备表单 2.设置表单的提交类型为POST请求 method=“post” 3.设置表单类型为文件上传表单 enctype=“multipart/form-data” 4.设置文件提交的地址 5.准备表单元素(1.普通的表单项 type=“text”;2.文件项 type=“file”) 6.设置表单元素的name属性值(表单提交一定要设置表单的name属性值,否则后台无法接收数据!)

文件上传 姓名: 文件: 提交 Servlet的方法实现

简要步骤:

文件上传

使用注解@MultipartConfig将一个 Servlet 标识为支持文件上传Servlet 将 multipart/form-data 的 POST请求封装成Part对象, 通过Part对上传的文件进行操作 @WebServlet("/uploadServlet") @MultipartConfig //如果是文件上传,必须要设置该注解! public class UploadServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("文件上传..."); //设置请求的编码格式 req.setCharacterEncoding("UTF-8"); //获取普通表单项(获取参数) String uname = req.getParameter("uname"); //表单中表单元素的name属性值 System.out.println("uname: " + uname); //获取Part对象 (Servlet 将 mutipart/form-data 的 POST 请求封装成 Part对象) Part part = req.getPart("myfile"); //通过Part对象得到上传的文件名 String fileName = part.getSubmittedFileName(); System.out.println("上传文件名:" + fileName); //得到文件存放的路径 String filePath = req.getServletContext().getRealPath("/"); System.out.println("文件存放路径:" + filePath); //上传文件到指定目录 part.write(filePath + "/" + fileName); } } 二、下载功能的实现 准备下载文件夹以及相关设置

在项目的工程目录下新建一个存放可供下载文件的文件夹,并准备好相关可供下载文件: 在这里插入图片描述 这时再把刚刚新建的文件夹添加到服务器的外部资源设置中: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

jsp页面

简要说明:

超链接下载

当使用超链接(a标签)时,如果遇到浏览器能识别的资源,则显示内容;若是无法识别,则会进行下载。

download属性

通过download属性规定浏览器进行下载download属性可以不写任何信息,会自动默认使用文件名 文件下载 文本文件 图片文件 压缩文件 文本文件 图片文件 文件名: 下载 Servlet的方法实现

核心步骤概要说明:

文件下载

需要通过resp.setContentType 方法设置Content-type的值,为浏览器无法使用某种方式或激活某个程序来处理的MIME类型,例如“application/octet-stream”需要通过 resp.setHeader 方法设置Content-Disposition 头的值 为“attachment;filename=文件名”读取下载文件,调用response.getOutputStream 方法向客户端写入附件内容。 @WebServlet("/downloadServlet") public class downloadServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("文件下载..."); //设置请求编码格式 req.setCharacterEncoding("UTF-8"); resp.setContentType("text/html;charset=UTF-8"); //获取参数 (得到要下载的文件名) String fileName = req.getParameter("fileName"); //参数的非空判断 trim:去除字符串的前后空格 if(fileName == null || "".equals(fileName.trim())){ resp.getWriter().write("请输入要下载的文件名!"); resp.getWriter().close(); return; } //得到图片存放的路径 String Path = req.getServletContext().getRealPath("/download/"); //通过路径得到file对象 File file = new File(Path+fileName); //判断文件对象是否存在并且是否为标准文件 if(file.exists() && file.isFile()){ //设置响应类型(浏览器无法使用某种方式或激活某个程序来处理的MIME类型) resp.setContentType("application/octet-stream"); //设置响应头信息 resp.setHeader("Content-Disposition","attachment;filename=" + fileName); //得到file文件的输入流 InputStream in = new FileInputStream(file); //得到字节输出流 ServletOutputStream out = resp.getOutputStream(); //定义byte数组 byte[] bytes = new byte[1024]; //定义长度 int len =0; //循环输出 while((len = in.read(bytes))!= -1){ //输出 out.write(bytes,0,len); } //关闭资源 out.close(); in.close(); }else{ resp.getWriter().write("文件不存在,请重试!"); resp.getWriter().close(); } } } 源码提供 页面展示

页面都很简单,单纯只是为了功能测试。 1.开始页面 在这里插入图片描述

2.上传页面 在这里插入图片描述

3.下载页面 在这里插入图片描述

工程文件提供

【JavaWeb】Servlet实现文件的上传和下载功能



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有