1.配置对应的文件,导入相应的包

对应包下载地址:https://wws.lanzous.com/ipFtEoyv1je

2.编写jsp页面

代码如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--Created by IntelliJ IDEA.User: AdminDate: 2021/5/9Time: 16:12To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><style>img{width: 150px;height: 350px;}</style>
</head>
<body>
<%--1、要有一个 form 标签,method=post 请求2、form 标签的 encType 属性值必须为 multipart/form-data 值3、在 form 标签中使用 input type=file 添加上传的文件4、编写服务器代码(Servlet 程序)接收,处理上传的数据。--%><%--encType=multipart/form-data 表示提交的数据,以多段(每一个表单项一个数据段)的形式进行拼
接,然后以二进制流的形式发送给服务器--%>
<form action="http://localhost:8080/_09EL/uploadServlet" method="post" enctype="multipart/form-data">用户名:<input type="text" name="username"/><br>头像:<input type="file" name="photo"/><br><input type="submit" value="上传"/>
</form><table><tr><td><img src="file/1.png"></td><td><img src="file/2.png"></td><td><img src="file/3.png"></td><td><img src="file/4.png"></td><td><img src="file/5.png"></td><td><img src="file/6.png"></td></tr>
</table>
<form action="http://localhost:8080/_09EL/downloadServlet" method="get" enctype="multipart/form-data">输入序号下载老婆的照片:<input type="text" name="SerialNumber"/><br><input type="submit" value="下载"/>
</form>
</body>
</html>

3.编写up和dw的Servlet程序

DownloadServlet

package com.xzh.Servlet; /*** @Author Lin* @CreateTime 2021/5/9 18:15*/import org.apache.commons.io.IOUtils;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;public class DownloadServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//        1、获取要下载的文件名String serialNumber = request.getParameter("SerialNumber");String downloadFileName = serialNumber+".png";
//        2、读取要下载的文件内容 (通过ServletContext对象可以读取)ServletContext servletContext = getServletContext();// 获取要下载的文件类型String mimeType = servletContext.getMimeType("/file/" + downloadFileName);System.out.println("下载的文件类型:" + mimeType);
//        4、在回传前,通过响应头告诉客户端返回的数据类型response.setContentType(mimeType);
//        5、还要告诉客户端收到的数据是用于下载使用(还是使用响应头)// Content-Disposition响应头,表示收到的数据怎么处理// attachment表示附件,表示下载使用// filename= 表示指定下载的文件名// url编码是把汉字转换成为%xx%xx的格式response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(downloadFileName, "UTF-8"));/*** /斜杠被服务器解析表示地址为http://ip:prot/工程名/  映射 到代码的Web目录*/InputStream resourceAsStream = servletContext.getResourceAsStream("/file/" + downloadFileName);// 获取响应的输出流OutputStream outputStream = response.getOutputStream();//        3、把下载的文件内容回传给客户端// 读取输入流中全部的数据,复制给输出流,输出给客户端IOUtils.copy(resourceAsStream, outputStream);}
}

UploadServlet

package com.xzh.Servlet;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;/*** @Author Lin* @CreateTime 2021/5/9 16:15*/
public class UploadServlet extends HttpServlet {/*** 处理文件上传* @param req* @param resp* @throws ServletException* @throws IOException*/@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//**********************************数据上传操作*******************************//判断是不是多段数据if(ServletFileUpload.isMultipartContent(req)){//创建fileItemFactory工厂实现类FileItemFactory fileItemFactory=new DiskFileItemFactory();//创建用于解析上传数据的工具类ServletFileUploadServletFileUpload servletFileUpload=new ServletFileUpload(fileItemFactory);try {//解析List<FileItem> list = servletFileUpload.parseRequest(req);for (FileItem fileitem : list){if (fileitem.isFormField()){//普通表单//得到普通表单的nameSystem.out.println("普通的name"+fileitem.getFieldName());//得到普通表单name对应的valueSystem.out.println("普通的value"+fileitem.getString("UTF-8"));}else {//得到上传表单的nameSystem.out.println("上传的name"+fileitem.getFieldName());//得到上传表单的文件名System.out.println("上传的文件名"+fileitem.getName());//存放文件 这里是我把他保存在本地try {fileitem.write(new File("e:\\UpLoadTest\\"+fileitem.getName()));} catch (Exception e) {e.printStackTrace();}//上传后请求重定向req.getRequestDispatcher("/upload.jsp").forward(req, resp);}}} catch (FileUploadException e) {e.printStackTrace();}}}
}

4.编写web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><context-param><param-name>url</param-name><param-value>jdbc:mqsql///test</param-value></context-param><servlet><servlet-name>UploadServlet</servlet-name><servlet-class >com.xzh.Servlet.UploadServlet</servlet-class></servlet><servlet><servlet-name>DownloadServlet</servlet-name><servlet-class>com.xzh.Servlet.DownloadServlet</servlet-class></servlet><servlet-mapping><servlet-name>DownloadServlet</servlet-name><url-pattern>/downloadServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>UploadServlet</servlet-name><url-pattern>/uploadServlet</url-pattern></servlet-mapping>
</web-app>

Java Servlet实现文件上传下载操作相关推荐

  1. java jsch下载文件,JSch使用sftp协议实现服务器文件上传下载操作

    Jsch是什么? JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等.你可以将它的功能集成到你自己的 程序中.同时该项目也提供一个J2 ...

  2. 如何用JSP+Servlet实现文件上传下载

    目录 一.辛老师教程 一.需要的文件: 二.上传步骤: 三.下载步骤 二.代码 1.前端 2.后端 3.web.xml 三.梳理框架 1.前端 2.后端 一.辛老师教程 一.需要的文件: (3条消息) ...

  3. 通过ajaxFileUpload异步请求上传文件(ajaxFileUpload+servlet实现文件上传下载)

    1.最终效果 实现选择图片(此处以图片为例,支持所有类型文件的上传),选择之后将选择的图片在页面中显示出来,点击上传,可以将文件上传到指定的地址中,上传成功后在当前页面自动显示下载标签. 源码下载地址 ...

  4. Box浅度接触-Java实现Box文件上传下载

    背景 Box(https://www.box.com/home)是定义为内容云,在我有限认知里面,感觉应该和云存储系统没啥区别.近日,有幸和Box做了一次浅度接触,颇为缠绵,记录在这里供有需要的朋友参 ...

  5. 转载tangl_99的Servlet 实现文件上传下载--自己的一点心得

    这个周末终于可以好好锻炼一下我的IBM ThinkPad T43了.今天看了一些关于JSP,Servlet方面的资料,写了简单的两个JavaBean.一个是UpLoad,一个是DownLoad.写得很 ...

  6. java的图片文件上传下载,多表新增,菜品信息分页

    上传文件:表单要求 1,enctype="multipart/form-data" 2.表单中需要有type="file"的input 3.表单的请求方式一定是 ...

  7. Java实现多文件上传下载,kindeditor富文本保存为word文件,文件列表分页显示

    介绍 SpringBoot+Thymeleaf+Mybaits项目部分功能, 实现文件的多文件上传和下载,以及将kindeditor富文本内容保存为.doc文件 文件上传/创建后以列表形式显示,并且可 ...

  8. java实现Excel文件上传下载(模板)-hutool

    引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</arti ...

  9. java ftp 下载慢_Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题

    废话不多说了,直接给大家贴代码了,具体代码如下所示: //文件上传 public static boolean uploadToFTP(String url,int port,String usern ...

最新文章

  1. Homestead 无法挂载共享目录解决方案
  2. 关系型数据库到HBase的数据储存方式变迁
  3. 关于querySelector 和 document.getElementsByTagName 选中集合问题
  4. vscode插件列表及配置信息
  5. js输出一个菱形_Webpack 4入口、输出和ES6模块
  6. 设置单元格填充方式_单元格的选择及设置单元格格式
  7. matlab和python哪个运行快_MATLAB比Python快吗?
  8. leetcode 1217 python
  9. 二十二 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别...
  10. 华彬 - 华彬讲透孙子兵法(2015年5月22日)
  11. 什么是Prettier?
  12. avast注册号|好用的avast注册号|没过期avast注册号
  13. Bootstrap入门基础(二)
  14. JavaScript debugger调试
  15. ubuntu系统清理
  16. 你想过自己注定是一个普通人吗?
  17. 走进tensorflow第九步——WARNING(警告)也值得关注
  18. linux挂移动硬盘命令,linux挂载命令mount及U盘、移动硬盘的挂载
  19. 水溶性花青素连接剂1617497-19-4,diSulfo-Cyanine5 alkyne,二磺酸花青素Cy5炔基
  20. 看不见的竞争-谈谈策略设计

热门文章

  1. Android小米手机必须插入sim卡才可以usb调试解决方案
  2. 在SQR中使用Break逻辑
  3. libc.so.6 导致Linux系统崩溃
  4. 【Ribbon负载均衡调用】—— 每天一点小知识
  5. 亚马逊云怎么增加硬盘_亚马逊云硬盘
  6. js点击复制隐藏域值
  7. 威胁建模_现实世界中的威胁建模
  8. 35岁以上的大龄测试员们,后来都干什么去了?
  9. SpringBoot整合Disconf
  10. 云图说|解析华为云黑科技:图计算技术