是什么

上传指的是将客户端的文件保存到服务器的磁盘中

基本实现原理

读取客户端的文件信息,将文件信息以流的形式发送到服务器,然后服务器将流中的信息保存到本地,以实现文件的上传

实例

注意:提交的表单类型一定是 enctype="multipart/form-data"

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><form action="fileUploadServlet"method="post" enctype="multipart/form-data">上传文件:<input type="file" name="file1"><input type="file" name="file2"><input type="file" name="file3"><br><input type="submit" value="上传"></form>
</body>
</html>
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;//配置servlet,并且支持上传文件
@WebServlet(name="fileUploadServlet" ,urlPatterns="/fileUploadServlet")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("到这里来了");doGet(request, response);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1、字符编码格式统一request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//2、设置一个保存文件的路径String savePath = "F:/czp/";//3、获取上传的文件集合Collection<Part> parts = request.getParts();//4、文件上传if (parts != null && parts.size() > 0) {for (Part part : parts) {String header = part.getHeader("content-disposition");String fileName = getFileName(header);part.write(savePath + File.separator + fileName);}}PrintWriter out = response.getWriter();out.println("上传成功");out.flush();out.close();}/*** 获取文件名* @param header* @return*/public String getFileName(String header) {String[] headerArray = header.split(";");System.out.println(headerArray[2]);String[] fileNameKeyValue = headerArray[2].split("=");String fileName = fileNameKeyValue[1].substring(fileNameKeyValue[1].lastIndexOf("\\") + 1).replaceAll("\"", "");return fileName;}
}

37、JAVA_WEB开发基础之上传功能相关推荐

  1. 38、JAVA_WEB开发基础之下载功能

    是什么 下载指的是将服务器端的文件保存到客户端的磁盘中 基本实现原理 根据对应的要下载的文件在服务器端找到对应的文件,然后获取到文件流对象,将流对象发送到客户端,然后客户端通过对返回结果中文件流的解析 ...

  2. 36、JAVA_WEB开发基础之监听器

    是什么 顾名思义就是监听器就是监听器,在开发中指的是一种机制,通过这种机制可以对应用中组件的创建.销毁.更改等动作进行监视,根据具体监听信息作出相应的处理 工作原理 就是预先给组件添加一个事件,当这个 ...

  3. 35、JAVA_WEB开发基础之过滤器

    是什么 过滤器javaweb的一个重要组件,一种规范,可以对发送到serlvet的请求进行拦截和响应进行过滤.实际开发中可以使用过滤器来对访问服务器的请求进行过滤,以提高安全性 过滤器的原理 可以配置 ...

  4. 31、JAVA_WEB开发基础之servlet(2)

    使用servlet需要依赖jar包:servlet-api.jar,下边介绍一下关于servlet的一些api Servlet接口 package javax.servlet;import java. ...

  5. 30、JAVA_WEB开发基础之servlet(1)

    servlet是什么 Servlet 是一种独立的 web 开发标准,用来接受.处理.返回浏览器的访问请求,它不应和服务器耦合在一起,servlet和servlet容器之间相互独立又相互依存,自我感觉 ...

  6. 39、JAVA_WEB开发基础之ajax和json

    ajax是什么 首先要知道ajax并不是一种新的技术,而是几种技术的强强联合,全称是Asynchronous Javascript and xml,其精髓在于异步加载资源,因此可以实现局部加载效果(因 ...

  7. 34、JAVA_WEB开发基础之EL表达式和标签

    EL表达式是什么 一种从域对象中获取数值的简化写法,el表达式语法格式为:${域对象.参数名} 使用方式 取出request范围内的参数:{pageContext.request.username} ...

  8. 33、JAVA_WEB开发基础之会话机制

    会话是什么 一个客户端浏览器与web服务器之间连续发生的一系列请求和响应过程就是会话,这些过程中产生的一系列信息就是会话信息,会话机制就是用于维护这些信息一致性的一种技术.通俗的说就是,一个A账号访问 ...

  9. 32、JAVA_WEB开发基础之jsp

    是什么 是简化servlet的一种技术,将html语句和java代码混合在一个文件中进行编写,只对网页中动态产生的内容用java代码编写,静 态内容仍用html语句编写 运行原理 jsp本质上是一个s ...

最新文章

  1. ES5和ES6数组遍历方法详解
  2. Cesium 创建Geometry
  3. python面试-python简单面试题
  4. python持久层框架_想设计一个Python的持久层框架
  5. 1.2.3 Using Option Files
  6. java 实现一段文字中,出现次数最多的字
  7. Redis中的Cluster总结
  8. 页面重构-让我们的布局自适应
  9. gdb tui的使用
  10. js组装知识(待续……)
  11. .NET中栈和堆的比较【转自:c#开发园地】
  12. python 视频转换为图像,图像转换为视频
  13. caffe框架学习(layer)
  14. 坚果pro2刷回官方_锤子坚果Pro2刷魔趣、刷回官方踩坑记
  15. GPU共享内存:pycuda使用教程
  16. 我不是教你诈 内容摘要
  17. 聚类时的轮廓系数评价和inertia_
  18. 在家做什么挣钱,50个赚钱的热门项目分享
  19. oracle物理文件删除如何恢复,Oracle数据文件物理删除后的恢复
  20. 基于arduino的5路循迹小车(1)

热门文章

  1. java socket send_java socket编程
  2. leetcode145. 二叉树的后序遍历
  3. 7-8 数字三角形 (31 分)(思路+详解+动态规划)Come Baby!!!!!!!!!!!
  4. [高等数学]这你不背?
  5. [蓝桥杯2018初赛]星期一-日期计算
  6. Mayor's posters POJ - 2528 (离散化+线段树)
  7. jsbridge实现及原理_JSBridge 实现原理解析
  8. java安装版本哪种好_我怎么知道我安装了哪个版本的Java?
  9. 520 钻石争霸赛 7-5 大勾股定理 (数学)
  10. Codeforces Round #598 (Div. 3) E. Yet Another Division Into Teams dp + 输出方案