【JavaWeb】文件的上传和下载
文章目录
- 一.文件的上传介绍⭐️
- 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】文件的上传和下载相关推荐
- JavaWeb 文件的上传和下载
JavaWeb 文件的上传和下载 这是一个简单的案例,让你快速了解JavaWeb中文件的上传和下载 文件的上传和下载是Web开发中非常常见和重要的功能,很多系统中都会经常使用文件的上传和下载. 如:博 ...
- 手把手教你学javaweb(五)文件的上传和下载
javaweb项目文件的上传和下载 在进行文件的上传和下载之前,我们先把javaweb项目做一点点的改动,那就是将LoginServlet的跳转由原来的forward方式改为 redirect方式 ...
- javaWeb - 文件的上传下载
文件的上传和下载 <%--文件的上传和下载文件的上传和下载,是非常常见的功能.很多的系统中,或者软件中都经常使用文件的上传和下载.比如:QQ 头像,就使用了上传.邮箱中也有附件的上传和下载功能. ...
- SpringMVC实现文件的上传和下载
SpringMVC实现文件的上传和下载http://www.bieryun.com/1120.html 前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:"用什么技术来实现一般网页上文件的 ...
- Akka实战:HTTP大文件断点上传、下载,秒传
2019独角兽企业重金招聘Python工程师标准>>> 访问:https://github.com/yangbajing/scala-applications/tree/master ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
- SpringMVC实现文件的上传与下载
文件的上传与下载可以说是工作中经常使用的功能,现在整理一下,希望能够给大家一个参考.这里以 Maven 的形式来创建项目,相关的配置文件会把主要的内容列出来,其他头文件信息不再一一全部的列出.最后会把 ...
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- FastDFS:Java客户都实现文件的上传、下载、修改、删除
FastDFS:Java客户都实现文件的上传.下载.修改.删除 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...
- 文件的上传和下载---学习笔记
文件上传原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是JSP编程中不能使用FTP方法来上传文件,这是由JSP运行机制所决定的. JSP中上传文 ...
最新文章
- 动态规划DP----背包问题总结
- 后MATLAB时代的七种开源替代,一种堪称完美!
- ng-template和对应生成的注释
- linux找link原路径,readlink命令找出符号链接所指向的位置
- Linux_free(buffer与cache区别)
- 2021-09-06
- 找不到方向?10大热门大数据应用领域总有一款适合你
- 20220705开发板BL602的SDK编译以及刷机
- HTML初学(简单html文件、简单表格布局)
- 工作清单软件哪个好用?桌面计划待办清单便签
- html lang=zh-cn解决Mac版Firefox中文字体显示问题
- C#计算一年有多少周
- 2022年软件测试人员必读的经典书籍推荐(附电子版)
- Todesk软件使用
- 转:细数国内市场智能语音开放平台有哪些?
- 将复制文件ExtremeCopy整合到TC(Total commander)中
- 某网站上传图片返回生成图像的获取
- 快速消费品企业TPM-营销费用管控系统应用实例
- 前后端分离经典处理方案总结-再也不用担心跨域认证不会做了
- js 关于下载文件如何判断是否下载成功