广告
返回顶部
首页 > 资讯 > 后端开发 > Python >servlet实现文件上传与下载功能
  • 207
分享到

servlet实现文件上传与下载功能

2024-04-02 19:04:59 207人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了servlet实现文件上传与下载的具体代码,供大家参考,具体内容如下 内容 我们分两大模块来进行讲解,即上传的实现,与下载的实现 上传的实现 注意了我们在写上传表

本文实例为大家分享了servlet实现文件上传与下载的具体代码,供大家参考,具体内容如下

内容

我们分两大模块来进行讲解,即上传的实现,与下载的实现

上传的实现

注意了我们在写上传表单的时候必须声明提交方式为post类型,enctype="multipart/fORM-data",这样的话才能实现上传。

当我们提交表单的时候看看响应体中都有什么内容:

好了,我们有了数据了,接下来我们怎么提取数据呢,注意我们已经不能使用requeest.getParamter()方法来进行参数的提取了,那怎么办呢,我们总不能自己写实现类来进行分割吧!我们可以使用Commons提供的小工具

好了,让我们来看看具体的操作步骤吧!这里我就不详细说了,一文代码流过:



public class FileUploadServlet extends httpservlet {
 public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 request.setCharacterEncoding("utf-8");
 response.setContentType("text/html;charset=utf-8");
  
 String path = request.getSession().getServletContext().getRealPath("/WEB-INF");
 //解决缓存大小,要不然你的内存会爆的。
 DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(1024 * 10,new File(path + "/" + "tmp2") );
 ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);
 
 List<FileItem> l = null;
 try {
 l = fileUpload.parseRequest(request);
 
 FileItem f2 = l.get(0);
 
 //解决文件存放在WEN_INF目录下问题
 
 path = path + "/tmp";
 
 //解决浏览器传递绝对路径问题
 String name = f2.getName();
 
 int i = name.lastIndexOf("/");
 if(i != -1) {
 name = name.substring(i);
 }
 
 //解决文件重名问题
 name = (UUID.randomUUID().toString().replace("-","").trim()) + name;
 
 
 //文件打散问题解决方法演示之hash打散
 int has = name.hashCode();
 //转换位16进制位,我们使用前两个值来判断
 
 String hex = Integer.toHexString(has);
 path = path + "/" + hex.charAt(0) + "/" + hex.charAt(2) ;
 File file = new File(path);
 if(! file.exists()) {
 file.mkdirs();
 }
 
 f2.write(new File(path + "/" + name));
 request.setAttribute("msg","恭喜你,上传成功了!");
 request.getRequestDispatcher("/index.jsp").forward(request, response);
 
 } catch (Exception e) {
 request.setAttribute("msg",e.getMessage());
 request.getRequestDispatcher("/index.jsp").forward(request, response);
 }
 }
}

好了,上传的问题基本就解决了。

下载的实现

下面我们来看一下下载问题的解决方案

下载文件是我们必须来设置两个响应头,设置Content-Disposition:它的默认值为inline,表示在浏览器窗口中打开!attachment;filename=xxx要不然我们输出的内容不会弹出保存框,只会显示在浏览器中。

设置Content-Type:你传递给客户端的文件是什么MIME类型

然后我们就可以new一个输入流来读取本地硬盘中的文件,在输出到ServleoutputStream中

在来一行代码流过:


public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 
 String mimeType = request.getSession().getServletContext().getMimeType("\\WEB-INF\\tmp\\2\\5\\"
 + "87bd61a4b7c346a5a2e6c072de84acda5.JdbcUtils处理多线程并发访问问题.avi");
 //解决文件名乱码问题
 String filename = "87bd61a4b7c346a5a2e6c072de84acda5.JdbcUtils处理多线程并发访问问题.avi";
 filename = encoding(filename, request);
 //两个请求头
 response.setHeader("Content-Type",mimeType);
 response.setHeader("Content-Disposition","attachment;filename=" + filename);
 ServletOutputStream out = response.getOutputStream();
 String path = request.getSession().getServletContext().getRealPath("\\WEB-INF\\tmp\\2\\5\\"
 + "87bd61a4b7c346a5a2e6c072de84acda5.JdbcUtils处理多线程并发访问问题.avi");
 File file = new File(path);
 
 FileInputStream inputStream = new FileInputStream(file);
 
 IOUtils.copy(inputStream, out, 1024*1024);
 
 }
 
 private String encoding(String filename,HttpServletRequest req) throws UnsupportedEncodingException {
 String user_agent = req.getHeader("User-Agent");
 String encodingFileName = null;
 if(user_agent.contains("Firefox")) {
 //按道理来说应该使用 BASE64Encoder进行编码,但是不知道为什么不能成功
 
 //那我们只能使用这种方式了
 encodingFileName = new String(filename.getBytes("UTF-8"), "ISO-8859-1");
 }
 else {
 encodingFileName = URLEncoder.encode(filename,"utf-8");
 }
 return encodingFileName;
 }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: servlet实现文件上传与下载功能

本文链接: https://www.lsjlt.com/news/122206.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • servlet实现文件上传与下载功能
    本文实例为大家分享了servlet实现文件上传与下载的具体代码,供大家参考,具体内容如下 内容 我们分两大模块来进行讲解,即上传的实现,与下载的实现 上传的实现 注意了我们在写上传表...
    99+
    2022-11-11
  • JavaWeb Servlet实现文件上传与下载功能实例
    目录前言项目准备文件上传前台页面文件下载资源准备超链接下载后台实现下载总结前言 在上网的时候我们常常遇到文件上传的情况,例如上传头像、上传资料等;当然除了上传,遇见下载的情况也很多,...
    99+
    2022-11-13
  • Servlet如何实现文件的上传与下载功能
    这篇文章给大家分享的是有关Servlet如何实现文件的上传与下载功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现条件:需要一个form标签,method为post请求2、form的encType属性值为mu...
    99+
    2023-06-14
  • Servlet实现文件的上传与下载
    前言: 文件的上传和下载在日常开发中很是常见,那么这一功能是如何实现的呢,下面我给大家介绍一下 实现条件: 1、需要一个form标签,method为post请求 2、form的enc...
    99+
    2022-11-11
  • Servlet文件的上传与下载怎么实现
    本文小编为大家详细介绍“Servlet文件的上传与下载怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Servlet文件的上传与下载怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。文件的上传和下载1...
    99+
    2023-07-02
  • Servlet实现文件下载功能
    本文实例为大家分享了Servlet实现文件下载的具体代码,供大家参考,具体内容如下把文件目录直接暴露给用户是很不安全的。所以要用Servlet来做,而且这样做,文件的存储方式就更丰富了,可以是从文件系统上取来的,也可以是数据库中经过计算生成...
    99+
    2023-05-30
    servlet 文件下载 实现文件
  • 利用servlet怎么实现一个文件上传下载功能
    利用servlet怎么实现一个文件上传下载功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、准备工作:  1.1 文件上传插件:uploadify;  1.2 文件上传所需...
    99+
    2023-05-31
    servlet 一个文件
  • Servlet文件的上传与下载详解
    目录文件的上传和下载1. 文件上传细节2. 文件上传3. 文件下载文件的上传和下载 1. 文件上传细节 要有一个 form 标签,method-post请求 (因为get有长度限制)...
    99+
    2022-11-13
  • SpringBoot文件上传与下载功能实现详解
    目录前言1、引入Apache Commons FileUpload组件依赖2、设置上传文件大小限制3、创建选择文件视图页面4、创建控制器5、创建文件下载视图页面前言 文件上传与下载是...
    99+
    2022-11-13
    SpringBoot文件上传 SpringBoot文件下载
  • SpringBoot怎么实现文件上传与下载功能
    这篇“SpringBoot怎么实现文件上传与下载功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么实...
    99+
    2023-07-06
  • SpringBoot如何实现文件上传与下载功能
    今天小编给大家分享一下SpringBoot如何实现文件上传与下载功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Sprin...
    99+
    2023-07-02
  • Servlet实现简单文件上传功能
    本文实例为大家分享了Servlet文件上传的具体代码,供大家参考,具体内容如下两点要素: 表单提交方式必须是post 2.enctype一定要是multipart/form-data。 enctype的默认值是application/x-w...
    99+
    2023-05-30
    servlet 文件上传 实现简单
  • java实现文件上传下载功能
    本文实例为大家分享了java实现文件上传下载的具体代码,供大家参考,具体内容如下 1.上传单个文件 Controller控制层 import java.io.File; imp...
    99+
    2022-11-12
  • SpringMVC实现文件上传下载功能
    目录导入需要的依赖包一、单个文件上传二、多个文件上传三、上传文件列表显示四、文件下载今天遇到文件上传的问题,使用Ajax方式进行提交,服务器一直报错The current reque...
    99+
    2022-11-13
  • Servlet实现代理文件下载功能
    用户向代理服务器发送请求,代理服务器从后端服务器上获取文件,并返回给用户web.xml:<servlet> <servlet-name>BigFile</servlet-name> <servl...
    99+
    2023-05-30
    servlet 下载 实现代理
  • vue与django如何实现文件上传下载功能
    本篇内容主要讲解“vue与django如何实现文件上传下载功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue与django如何实现文件上传下载功能”吧!文件上传功能上传后端部分(一)Mod...
    99+
    2023-07-05
  • Vue实现文件上传和下载功能
    本文实例为大家分享了Vue实现文件上传和下载功能的具体代码,供大家参考,具体内容如下 1、a标签download属性 在H5中,为a标签新增了一个download属性,来直接文件的...
    99+
    2022-11-12
  • java实现ftp文件上传下载功能
    本文实例为大家分享了ftp实现文件上传下载的具体代码,供大家参考,具体内容如下package getUrlPic;import java.io.ByteArrayInputStream;import java.io.IOException;...
    99+
    2023-05-31
    ftp 上传 下载
  • SpringBoot实现文件上传下载功能小结
    最近做的一个项目涉及到文件上传与下载。前端上传采用百度webUploader插件。有关该插件的使用方法还在研究中,日后整理再记录。本文主要介绍SpringBoot后台对文件上传与下载的处理。单文件上传// 单文件上传@RequestMapp...
    99+
    2023-05-31
    spring boot 文件上传
  • SpringMVC实现文件上传与下载
    本文实例为大家分享了SpringMVC实现文件上传与下载的具体代码,供大家参考,具体内容如下 0.环境准备 1.maven依赖 <dependencies> ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作