依赖jar

        <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency>

示例如下:

1.   新建Maven项目  upload

  war  类型

2.   pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.java</groupId><artifactId>upload</artifactId><version>1.0.0</version><packaging>war</packaging><dependencies><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build>
</project>

3.   UploadFileServlet.java

package com.java.servlet;import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;/*** 原生Servlet上传文件* */
public class UploadFileServlet extends HttpServlet {private static final long serialVersionUID = -755404037178760784L;/*** 设置字符集为UTF-8*/private static final String ENCODING = "UTF-8";@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {if (ServletFileUpload.isMultipartContent(request)) {try {DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);List<FileItem> items = upload.parseRequest(request);// 存储普通表单参数Map<String, String> paramMap = new HashMap<>();// 存储文件参数Map<String, FileItem> fileMap = new HashMap<>();/* 解析表单参数 */for (FileItem item : items) {// 普通表单参数if (item.isFormField()) {paramMap.put(item.getFieldName(), item.getString(ENCODING));}// 文件参数else {fileMap.put(item.getFieldName(), item);}}/* 从参数集合中获取需要的参数 */String uploadPath = paramMap.get("uploadPath");FileItem fileItem = fileMap.get("file");String fileName = fileItem.getName();File outFile = new File(uploadPath, fileName);if (outFile.exists()) {FileUtils.forceDelete(outFile);}fileItem.write(outFile);write(response, "上传完成:" + outFile.getAbsolutePath());} catch (FileUploadException e) {e.printStackTrace();write(response, e.getMessage());} catch (Exception e) {e.printStackTrace();write(response, e.getMessage());}}// 请求Content-type设置错误时给出提示else {write(response, "非multipart类型,检查Content-type");}}private void write(HttpServletResponse response, String message) {response.setContentType("text/html; charset=UTF-8");PrintWriter writer = null;try {writer = response.getWriter();writer.write(message);writer.flush();} catch (IOException e) {e.printStackTrace();} finally {writer.close();}}}

4.   web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5"><display-name>upload</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>uploadFile</servlet-name><servlet-class>com.java.servlet.UploadFileServlet</servlet-class></servlet><servlet-mapping><servlet-name>uploadFile</servlet-name><url-pattern>/uploadFile</url-pattern></servlet-mapping>
</web-app>

5.   新建页面文件  src/main/webapp/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%String path = request.getContextPath();String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%><!DOCTYPE html>
<html><head><title>上传文件</title><base href="<%=basePath%>"><meta http-equiv="content-type" content="text/html; charset=UTF-8" /></head><body><form action="uploadFile" enctype="multipart/form-data" method="post"><table><tr><th>选择上传文件:</th><td><input name="file" type="file" /></td></tr><tr><th>上传服务器路径:</th><td><input name="uploadPath" type="text" placeholder="上传服务器路径" /></td></tr><tr><td colspan="2"><button type="submit">上传</button></td></tr></table></form></body></html>

部署到tomcat下,启动

浏览器输入 http://localhost:8080/upload/

如下所示:

选择文件,输入上传路径  G:\Temp\Test  如下所示:

单击【上传】,返回信息如下:

上传完成:G:\Temp\Test\fastjson-1.2.49.jar

查看G:\Temp\Test,文件已上传成功!

.

转载于:https://www.cnblogs.com/jonban/p/upload.html

原生Servlet 上传文件相关推荐

  1. java flex 上传文件_使用Flex和java servlet上传文件

    资源都是来自网上.本实例将展示使用Flex和java servlet上传文件. 事前准备就是到http://commons.apache.org 下载common-fileupload-1.1.1.j ...

  2. 上传文件到服务器并显示,J2EE如何实现Servlet上传文件到服务器并相应显示功能...

    J2EE如何实现Servlet上传文件到服务器并相应显示功能 发布时间:2021-07-10 11:44:54 来源:亿速云 阅读:82 作者:小新 这篇文章将为大家详细讲解有关J2EE如何实现Ser ...

  3. Servlet上传文件和下载文件示例

    Java Web应用程序中的文件上载和下载以及常见任务. 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例. 用例 我们的用例是提供一 ...

  4. java ee 上传文件_17.《JavaEE 学习笔记》Servlet 上传文件

    功能介绍: 利用 Servlet 和表单提交,选择本地文件上传到服务器.上传的文件可以是文本文件或图像文件或任何文档,不能是文件夹. 需要引入的 jar 文件:commons-fileupload-1 ...

  5. servlet上传文件接收工具

    2019独角兽企业重金招聘Python工程师标准>>> utf-8编号,如果是其他编码的请自行替换里面的编码 import java.io.File; import java.uti ...

  6. 【Servlet】servlet上传文件

    文章目录 1 添加jar包 2 编写上传文件的html页面 3 web.xml添加servlet配置信息 4 编写servlet类 5 显示信息 1 添加jar包 往lib目录下添加两个上传文件所需要 ...

  7. JSP利用servlet上传文件时的中文乱码问题

    JSP处理乱码问题是一个痛苦的过程.这次servlet传送文件的乱码折腾了我至少两周. 总结如下: 1.第一类乱码: 就是文件传送过来的文件名等是乱码:但是servlet输出的页面汉字正常显示. 解决 ...

  8. servlet文件上传下载_Servlet上传文件和下载文件示例

    servlet文件上传下载 Java Web应用程序中的文件上载和下载以及常见任务. 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例 ...

  9. Servlet如何上传文件? 戳这里

    首先对Servlet上传文件的简单理解 此前,Servlet本身没有对文件上传提供直接的支持,一般需要使用第三方框架来实现,这样就比较麻烦 不过,Servlet3.0之后提供了这个功能,而且使用非常简 ...

最新文章

  1. 数据同步的终极解决方案,阿里巴巴开源的Canal框架当之无愧!!
  2. 修改域名dns服务器,新网互联域名如何修改DNS设置方法
  3. p_re 实验数据库ViPER和ETHZ的下载地址和实验评价标准
  4. python查看图像通道数(通过PIL)
  5. javascript 执行效率 java_有效提高JavaScript执行效率的几点知识
  6. 关于一些nginx的高级扩展应用
  7. LC3 正式升级 Open Source Summit,分论坛主题活动精彩纷呈
  8. 谭浩强c语言程序60题,谭浩强版C语言课后经典习题解答100例
  9. 24lc08 c语言源码,24LC08,24LC08 pdf中文资料,24LC08引脚图,24LC08电路-Datasheet-电子工程世界...
  10. 【c语言】解释为什么32767+1=-32768
  11. 阿里天池工业蒸汽量预测baseline-数据探索篇
  12. 【地图】高德静态地图(页面展示和导出Word)
  13. WordPress插件 Buddypress完美汉化版 社区插件
  14. 开源协议是什么?有哪些?如何选择?
  15. 转:条件变量(Condition Variables)
  16. 金蝶K3--采购单价---导入
  17. 服务器右键文件夹不显示共享,server2012共享文件夹、局域网共享设置权限的方法...
  18. SprngBoot Admin (应用监控)
  19. 【C语言】Hellow World的多种输出写法
  20. cuda8.0.44linux.run,ubuntu16.04+cuda8.0+cudnn6+tensorflow(gpu)1.4,一遍成功

热门文章

  1. vhdl变量赋初值_变量类型、构造器、封装以及 LeetCode 每日一题
  2. ubuntu16.04下Caffe绘制训练过程的loss和accuracy曲线
  3. Go WebSocket开发与测试实践【gorilla/websocket】
  4. Python操作数据库完成接口测试
  5. c语言存为pdf,c语言10年保存(免费).pdf
  6. mac的 上传到linux服务器地址,【mac 怎么登录到 linux 服务器并传输文件?】-看准网...
  7. Scale-Adaptive Neural Dense Features: Learning via Hierarchical Context Aggregation
  8. QT中PRO文件写法
  9. linux上容器端口映射,MacOS下的docker端口映射
  10. css背景图毛玻璃,css实现背景图片的毛玻璃效果