文章目录

  • 一.文件的上传介绍⭐️
    • 1.文件上传及HTTP协议的说明
    • 2.commons-fileupload.jar常用API介绍说明
  • 二.文件下载⭐️

一.文件的上传介绍⭐️

1.文件上传及HTTP协议的说明

(1).要有一个form标签,method=post请求
(2).form标签的encType属性值必须为multipart/form-data
(3).在form标签中使用input type=file添加上传的文件
(4).编写服务器代码接收(Servlet程序),处理上传数据

public class UploadServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// System.out.println("文件上传过来了");//System.out.println(req.getParameter("username"));//--nullServletInputStream inputStream = req.getInputStream();byte[] buffer = new byte[1024000];int read =  inputStream.read(buffer);System.out.println(new String(buffer,0,read));}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><form action="http://localhost:8080/09_EL/uploadServlet" method="post" enctype="multipart/form-data">用户名: <input type="text" name="username" /></br>头像: <input type="file" name="photo" /></br><input type="submit" value="上传" /></form>
</body>
</html>

2.commons-fileupload.jar常用API介绍说明

常用的类:

  • ServletFileUpload类,用于解析上传的数据.

  • FileItem类,表示每一个表单项

常用方法:

  • (1).判断当前上传的数据格式是否是多段的格式.
  • boolean ServletFileUpload.isMultipartContent(HttpServletRequest request);
  • (2).解析上传的数据
  • public List<FileItem> parseRequest(HttpServletRequest request);
  • (3).判断当前这个表单项,是否是普通的表单项
  • true表示普通的表单项,false表示上传的文件类型
  • boolean FileItem.isFormField();
  • (4).获取表单项的name属性值
  • String FileItem.getFileldName();
  • (5).获取当前表单项的值
  • String FileItem.getString();
  • (6).获取上传的文件名
  • String FileItem.getName();
  • (7).将上传的文件写到参数file所指向的硬盘位置
  • void FileItem.write(file);
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.判断上传的数据是否是多段数据(只有是多段的数据,才是文件上传的)if(ServletFileUpload.isMultipartContent(req)){//创建FileItemFactory工厂实现类FileItemFactory fileItemFactory = new DiskFileItemFactory();//创建用于解析上传数据的工具类 ServletFileUploadServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);try {//解析上传的数据,得到每一个表单项FileItemList<FileItem> list = servletFileUpload.parseRequest(req);//循环判断,每一个表单项,是普通类型,还是上传的文件for(FileItem fileItem : list){if(fileItem.isFormField()){//普通表单项System.out.println("表单项的name属性值: " + fileItem.getFieldName());//参数UTF-8,解决乱码问题System.out.println("表单项的value属性值: " + fileItem.getString("UTF-8"));}else{//上传的文件System.out.println("表单项的name属性值: " + fileItem.getFieldName());System.out.println("上传的文件名: " + fileItem.getName());fileItem.write(new File("D:\\" + fileItem.getName()));}}} catch (FileUploadException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}
<body><form action="http://localhost:8080/09_EL/uploadServlet" method="post" enctype="multipart/form-data">用户名: <input type="text" name="username" /></br>头像: <input type="file" name="photo" /></br><input type="submit" value="上传" /></form>
</body>

二.文件下载⭐️

 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.获取要下载的文件名String downloadFileName = "pic-02.png";//2.读取要下载的文件内容(通过ServletContext对象可以读取)ServletContext servletContext = getServletContext();InputStream resourceAsStream = servletContext.getResourceAsStream("/file/" + downloadFileName);//3.在回传前,通过响应头告诉客户端返回的数据类型//获取要下载的文件类型String mimeType = servletContext.getMimeType("/file/" + downloadFileName);System.out.println("下载的文件类型:" + mimeType);resp.setContentType(mimeType);//4.在回传前,通过响应头告诉客户端收到的数据是用于下载使用//Content-Disposition响应头,表示收到的数据怎么处理//attachment表示附件,表示下载使用//filename= 表示指定下载的文件名resp.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode("中国.png","UTF-8"));//resp.setHeader("Content-Disposition","attachment;filename=22.png");//5.把读取的文件内容回传给客户端//获取响应的输出流ServletOutputStream outputStream = resp.getOutputStream();//读取输入流中的全部数据,复制给输出流,输出给客户端IOUtils.copy(resourceAsStream,outputStream);}

【JavaWeb】文件的上传和下载相关推荐

  1. JavaWeb 文件的上传和下载

    JavaWeb 文件的上传和下载 这是一个简单的案例,让你快速了解JavaWeb中文件的上传和下载 文件的上传和下载是Web开发中非常常见和重要的功能,很多系统中都会经常使用文件的上传和下载. 如:博 ...

  2. 手把手教你学javaweb(五)文件的上传和下载

    javaweb项目文件的上传和下载 ​ 在进行文件的上传和下载之前,我们先把javaweb项目做一点点的改动,那就是将LoginServlet的跳转由原来的forward方式改为 redirect方式 ...

  3. javaWeb - 文件的上传下载

    文件的上传和下载 <%--文件的上传和下载文件的上传和下载,是非常常见的功能.很多的系统中,或者软件中都经常使用文件的上传和下载.比如:QQ 头像,就使用了上传.邮箱中也有附件的上传和下载功能. ...

  4. SpringMVC实现文件的上传和下载

    SpringMVC实现文件的上传和下载http://www.bieryun.com/1120.html 前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:"用什么技术来实现一般网页上文件的 ...

  5. Akka实战:HTTP大文件断点上传、下载,秒传

    2019独角兽企业重金招聘Python工程师标准>>> 访问:https://github.com/yangbajing/scala-applications/tree/master ...

  6. 初学Java Web(7)——文件的上传和下载

    文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...

  7. SpringMVC实现文件的上传与下载

    文件的上传与下载可以说是工作中经常使用的功能,现在整理一下,希望能够给大家一个参考.这里以 Maven 的形式来创建项目,相关的配置文件会把主要的内容列出来,其他头文件信息不再一一全部的列出.最后会把 ...

  8. java实现ftp文件的上传与下载

    最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...

  9. FastDFS:Java客户都实现文件的上传、下载、修改、删除

    FastDFS:Java客户都实现文件的上传.下载.修改.删除 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...

  10. 文件的上传和下载---学习笔记

    文件上传原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是JSP编程中不能使用FTP方法来上传文件,这是由JSP运行机制所决定的. JSP中上传文 ...

最新文章

  1. 动态规划DP----背包问题总结
  2. 后MATLAB时代的七种开源替代,一种堪称完美!
  3. ng-template和对应生成的注释
  4. linux找link原路径,readlink命令找出符号链接所指向的位置
  5. Linux_free(buffer与cache区别)
  6. 2021-09-06
  7. 找不到方向?10大热门大数据应用领域总有一款适合你
  8. 20220705开发板BL602的SDK编译以及刷机
  9. HTML初学(简单html文件、简单表格布局)
  10. 工作清单软件哪个好用?桌面计划待办清单便签
  11. html lang=zh-cn解决Mac版Firefox中文字体显示问题
  12. C#计算一年有多少周
  13. 2022年软件测试人员必读的经典书籍推荐(附电子版)
  14. Todesk软件使用
  15. 转:细数国内市场智能语音开放平台有哪些?
  16. 将复制文件ExtremeCopy整合到TC(Total commander)中
  17. 某网站上传图片返回生成图像的获取
  18. 快速消费品企业TPM-营销费用管控系统应用实例
  19. 前后端分离经典处理方案总结-再也不用担心跨域认证不会做了
  20. js 关于下载文件如何判断是否下载成功

热门文章

  1. 用 Java 写了一个类 QQ 界面聊天小项目,可在线聊天!
  2. offsetTop问题
  3. 这 5 个编程名言还请您收好
  4. 一定会被mysql读取的文件_MySQL安装目录下,一定会被MySQL读取的配置文件是()。
  5. UEFI 学习3.6 - ARM QEMU上的ACPI表
  6. 03 ,二元函数,二元函数偏导数,方向导数,梯度 :
  7. 爱情还你,骄傲还我!
  8. FileUpload上传文件出现Internet Explorer无法显示该页面
  9. Wireshark-数据包过滤和分析
  10. R语言——绘制直方图