2019独角兽企业重金招聘Python工程师标准>>>

转载:原文连接https://blog.csdn.net/HaHa_Sir/article/details/81744629
一、前端 html 代码<center><h2> 基于servelt 3.0注解实现文件上传 </h2><h3>1、单个文件上传</h3><form action="${ctx }/uploadServlet" method="post" enctype="multipart/form-data">文件: <input type="file" name="uploadfile" ><br><br><br><button type="submit" >提交</button></form><hr><h3>2、 多个文件上传</h3><form action="${ctx }/uploadServlet" method="post" enctype="multipart/form-data">文件1: <input type="file" name="uploadfile" >文件2: <input type="file" name="uploadfile" >文件3: <input type="file" name="uploadfile" ><br><br><br><button type="submit" >提交</button></form>
</center>
二、uploadServlet 后端上传部分代码import java.io.File;
import java.io.IOException;
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("/uploadServlet")
// 该注解 将该Servlet 标记为一个文件上传的 servlet
@MultipartConfig
public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 1、 获取文件的存储路径String realPath =         request.getServletContext().getRealPath(File.separator+"userfiles");File file = new File(realPath);if(!file.exists()){file.mkdirs();System.out.println("路径: "+realPath +" 创建成功!");}// 2、获取上传文件对象的集合Collection<Part> partList = request.getParts();if(partList.size() == 1){// 单个文件上传Part part = request.getPart("uploadfile");// 获取header 如: form-data; name="uploadfile"; filename="2018-08-11 开【华夏视讯网首发hxsxw.com】.mkv"String header = part.getHeader("content-disposition");// 获取文件名String fileName = header.split(";")[2].split("=")[1].replaceAll("\"", "");// 执行写入操作 --- 上传到指定的目录part.write(realPath+File.separator+fileName);}else{for (Part part : partList) {// 多个文件上传String header = part.getHeader("content-disposition");String fileName = getFileName(header);part.write(realPath+File.separator+fileName);}}request.setAttribute("message", "文件上传成功!");request.getRequestDispatcher("/WEB-INF/views/client/message.jsp").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}/*** 根据请求头解析出文件名* 请求头的格式:火狐和google浏览器下:form-data; name="file"; filename="snmp4j--api.zip"* IE浏览器下:form-data; name="file"; filename="E:\snmp4j--api.zip"* [@param](https://my.oschina.net/u/2303379) header 请求头* [@return](https://my.oschina.net/u/556800) 文件名* [@see](https://my.oschina.net/weimingwei) https://www.cnblogs.com/xdp-gacl/p/4224960.html* @date 2018年8月12日 22:57:27*/public String getFileName(String header) {/*** String[] tempArr1 = header.split(";");代码执行完之后,在不同的浏览器下,tempArr1数        组里面的内容稍有区别* 火狐或者google浏览器下:tempArr1={form-data,name="file",filename="snmp4j--api.zip"}* IE浏览器下:tempArr1={form-data,name="file",filename="E:\snmp4j--api.zip"}*/String[] tempArr1 = header.split(";");/***火狐或者google浏览器下:tempArr2={filename,"snmp4j--api.zip"}*IE浏览器下:tempArr2={filename,"E:\snmp4j--api.zip"}*/String[] tempArr2 = tempArr1[2].split("=");//获取文件名,兼容各种浏览器的写法String fileName = tempArr2[1].substring(tempArr2[1].lastIndexOf("\\")+1).replaceAll("\"", "");return fileName;}
}
三、DownLoadServlet 文件下载1、使用 response.getOutputStream(); 返回二进制数据流,实现文件下载2、 代码如下:import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**
* 文件下载 servlet
*/
@WebServlet("/downloadServlet")
public class DownLoadServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 1、文件存放路径String path="c:/";// 2、需要下载的文件名String fileName="default.png";File file = new File(path+fileName);response.reset();response.setCharacterEncoding("UTF-8");fileName = URLEncoder.encode(fileName, "UTF-8");response.setHeader("Content-Disposition", "attachment;fileName="+fileName);InputStream input = new FileInputStream(file);ServletOutputStream out = response.getOutputStream();byte[] buff =new byte[1024];int len ;while((len = input.read(buff)) != -1){out.write(buff, 0, len);out.flush();}input.close();out.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

转载于:https://my.oschina.net/u/3740271/blog/3004887

原生Servlet文件上传和下载Servlet多个文件上传相关推荐

  1. linux上使用FTP下载远程PTF远程文件

    linux上使用FTP下载远程PTF远程文件 #从FTP上下载单文件到本地 #!/bin/sh mkdir /market/datacopy/222/hanguang/scada/$(date +%Y ...

  2. Struts文件上传与下载详解_文件的下载

    在 两篇我们主要说的是文件的上传,既然有上传那就有下载,那么咱们看一下struts里面是怎么个下载法! 1.写个文件下载的表单页面: <a href="downLoad.action? ...

  3. 文件上传、下载、导出(图片上传、下载)

    一.文件上传 1.常规文件上传 input 标签 type="file", 点击接收上传的文件 <label for="file_url">< ...

  4. ftp 站点的创建实现文件的上传和下载 以及 ftp没有权限上传文件(错误:200 Type set to I)

    当你已经配置好iis. 步骤: 一:随便在一个盘下创建一个文件bb(文件名可以自己取)我的在:D:\bb 二:进入iis 接着: 接着下一步: 接着下一步: 然后点击完成 三:进入D:\bb,新建一个 ...

  5. Springboot前后端分离上传、下载压缩包、查看文件

    Controller层: /*** 保存附件按钮* @param file 附件* @return 附件路径**/@PostMapping(value = "/upload")Ob ...

  6. 使用FtpWebRequest 类操作(上传、下载和删除)FTP上的XML文件

    使用如下类来实现ftp上操作xml遇到如下问题: 1.在公司内网中的服务器上搭建ftp来操作,一切正常:但是,当连接客户的机器的时候,出现乱码: 2.加上WebProxy后,客户端是xml格式的,下载 ...

  7. 上机考试系统 commons-fileupload 上传与下载 压缩为 zip 文件 删除文件夹下所有内容...

    在 maven 中使用了 commons-fileupload,使用方法: (一)上传 1.0 pom 文件依赖 <dependency><groupId>commons-fi ...

  8. (转)C#对FTP的操作(上传,下载,重命名文件,删除文件,文件存在检查)

    转自:http://blog.csdn.net/hejialin666/article/details/3522815 1 using System; 2 using System.Collectio ...

  9. 通过php上传和下载rar/zip压缩文件

    前端显示界面 <html> <head> <meta charset="utf-8"> <title>压缩文件上传下载</ti ...

最新文章

  1. 这份“插件英雄榜Top20”才是Chrome的正确打开方式!
  2. 如何添加QQ 微信等程序到右键打开
  3. Python基础学习!容器:列表,元组,字典与集合!(2)
  4. Http协议(7)—Http缓存
  5. Hibernate懒加载问题的5种解决方案
  6. 在 Nginx 上支持 HTTP/3
  7. JavaScript执行bat文件清理浏览器缓存
  8. 深山红叶PE工具箱嫦娥一号纪念版
  9. 多线程-Thread.join()的运用
  10. 亲民地理-第39期-佛山(2)南风古灶_我是亲民_新浪博客
  11. 【Word】word2010中如何去掉标题前面的小黑点
  12. Python DataTable用法(一)
  13. 智能暖风机——3.利用B3950实现温度采集功能
  14. html单标签和双标签汇总
  15. 关于啤酒和尿布故事的真相
  16. android studio创建md,如何在Android Studio中设置*md文件打开方式
  17. 思科的服务器困局:投资增长,还是退出?
  18. faiss通用向量搜索服务玩转腾讯880万词向量
  19. 05.敬业、牺牲与奋斗
  20. 歌曲:我愿爱(tvb台庆剧插曲)

热门文章

  1. java jdbc事务_Java JDBC事务管理和保存点
  2. 开课吧:全栈工程师的关键开发技能(硬实力)
  3. C语言基础学习教程基本语法
  4. react-native开发安卓app相关使用总结
  5. 这一大堆打着RAR旗号的文件都是啥
  6. jenkins插件之Publish Over SSH
  7. 黄聪:JQUERY的datatables插件,Date range filter时间段筛选功能
  8. Linux关机重启指令
  9. Android 回调接口是啥,回调机制详解(zhuan)
  10. 作为一个linux系统运维师必须掌握的定期任务执行命令cront