JavaWeb中文件下载

javaweb 多个文件下载 javaweb文件下载多个 @WebServlet("/user") public class UserController extends HttpServlet { private UserService userService = new UserServiceImpl(); @Override public void init(ServletConfig config) throws ServletException { super.init(conf 阅读详情

文件下载

Servlet下载问题

被下载的资源必须放到WEB-INF目录下,用户不能通过浏览器直接访问,然后通过Servlet完成下载。在jsp页面中给出超链接,链接到DownloadServlet,并提供要下载的文件名称。然后DownloadServlet获取文件的真实路径,然后把文件写入到response.getOutputStream()流中。

 

download.jsp

  <body>

    This is my JSP page. <br>

    <a href="<c:url value='/DownloadServlet?path=a.avi'/>">a.avi</a><br/>

    <a href="<c:url value='/DownloadServlet?path=a.jpg'/>">a.jpg</a><br/>

    <a href="<c:url value='/DownloadServlet?path=a.txt'/>">a.txt</a><br/>

  </body>

 

DownloadServlet.java

    public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       String filename = request.getParameter("path");

       String filepath = this.getServletContext().getRealPath("/WEB-INF/uploads/" + filename);

       File file = new File(filepath);

       if(!file.exists()) {

           response.getWriter().print("您要下载的文件不存在!");

           return;

       }

       IOUtils.copy(new FileInputStream(file), response.getOutputStream());

    }

 

上面代码有如下问题:

l  可以下载a.avi,但在下载框中的文件名称是DownloadServlet;

l  不能下载a.jpg和a.txt,而是在页面中显示它们。

改进Servlet下载

处理上一例中的问题,让下载框中可以显示正确的文件名称,以及可以下载a.jpg和a.txt文件。通过添加content-disposition头来处理上面问题。当设置了content-disposition头后,浏览器就会弹出下载框。而且还可以通过content-disposition头来指定下载文件的名称!

 

       String filename = request.getParameter("path");

       String filepath = this.getServletContext().getRealPath("/WEB-INF/uploads/" + filename);

       File file = new File(filepath);

       if(!file.exists()) {

           response.getWriter().print("您要下载的文件不存在!");

           return;

       }

       response.addHeader("content-disposition", "attachment;filename=" + filename);

       IOUtils.copy(new FileInputStream(file), response.getOutputStream());

上面的代码已经处理txt和jpg等文件的下载问题,并且也处理了在下载框中显示文件名称的问题,但是如果下载的文件名称是中文的,那么还是会出现问题。

处理Servlet下载编码问题

处理在下载框中显示中文的问题,要通过URL来编码中文即可!

download.jsp

    <a href="<c:url value='/DownloadServlet?path=这个杀手不太冷.avi'/>">这个杀手不太冷.avi</a><br/>

    <a href="<c:url value='/DownloadServlet?path=白冰.jpg'/>">白冰.jpg</a><br/>

    <a href="<c:url value='/DownloadServlet?path=说明文档.txt'/>">说明文档.txt</a><br/>

 

DownloadServlet.java

       String filename = request.getParameter("path");

       // GET请求中,参数中包含中文需要自己动手来转换。

       // 当然如果你使用了“全局编码过滤器”,那么这里就不用处理了

       filename = new String(filename.getBytes("ISO-8859-1"), "UTF-8");

       String filepath = this.getServletContext().getRealPath("/WEB-INF/uploads/" + filename);

       File file = new File(filepath);

       if(!file.exists()) {

           response.getWriter().print("您要下载的文件不存在!");

           return;

       }

       // 所有浏览器都会使用本地编码,即中文操作系统使用GBK

       // 浏览器收到这个文件名后,会使用iso-8859-1来解码

       filename = new String(filename.getBytes("GBK"), "ISO-8859-1");

       response.addHeader("content-disposition", "attachment;filename=" + filename);

       IOUtils.copy(new FileInputStream(file), response.getOutputStream());

java 读取WEB-INF下文件夹中的properties文件 非常实用的读取配置文件的小工具,专门读取WEB-INF下文件夹中的properties文件,代码简洁、亲测没有问题,适用范围广,任何类中都可调用,传入Key及可得到Value 立即下载

相关推荐

Java在指定路径上创建文件提示不存在解决方法

在本篇文章里小编给大家整理的是一篇关于Java在指定路径上创建文件提示不存在解决方法,有需要的朋友们可以参考下。

java 文件不存在_Java文件流下载并提示文件不存在

做文件下载功能的时候,一般使用流的形式下载文件,如果源文件不存在,下载页面可能就会没有提示,或者一片空白用户操作之后可能一头雾水,那如何友好提示呢?想到的有两种1.可以尝试下载一个名称为:文件不存在.txt 的文档,里面还可以补充说明信息,保证每次能下载到文件,避免没有响应到用户的情况。2.后台输出一段JavaScript脚本提示文件不存在或已经被删除。直接上代码前端只有给出一个超链接即可套路得人...

weixin_26820341的博客 1929

YOLOv5轻量化实战:从Ghost模块到工业级部署的完整指南

本文详细介绍了YOLOv5轻量化实战,重点解析了Ghost模块在工业检测中的应用及其优化策略。通过Ghost卷积技术,模型参数量和GFLOPs显著降低,同时保持高精度,适用于实时性要求严格的工业场景。文章还提供了从模型优化到TensorRT加速的完整部署指南,助力开发者实现高效工业级应用。

weixin_28223453的博客 489

javaWeb实现文件下载

今天学习了JavaWeb实现文件下载,为了以后方便查找并让需要的人学习,今儿把代码献上!!!! 首先写一个jsp页面 字体加粗的为主要内容: download.jsp: <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerNa

Cheng_May的博客 2万+

在Unity中为Sentis部署的YOLOv8模型集成NMS层并实现移动端性能优化

本文详细讲解了在Unity中利用Sentis部署YOLOv8模型时,如何通过代码动态集成NMS层以解决移动端性能瓶颈。文章核心在于避免导出时绑定NMS,转而使用Sentis原生API在运行时高效构建NMS处理流程,并分享了关键的GPU数据操作与移动端性能优化技巧,确保模型在移动设备上流畅运行。

p1q2r的博客 1093

Simulink中通过MEX与MinGW实现C/C++结构体变量的高效导入

本文详细介绍了在Simulink中通过MEX工具链与MinGW编译器,高效导入C/C++结构体变量的完整流程。文章从需求背景出发,逐步讲解了MinGW环境配置、.h文件编写规范、核心导入命令Simulink.importExternalCTypes的使用,以及如何在MATLAB Function模块和总线创建器中调用自定义结构体,旨在实现模型与代码的无缝对齐,为后续仿真和代码生成奠定坚实基础。

weixin_29056781的博客 343

javaWeb 文件上传及下载

网络上最常用的就是文件的上传和下载,本文讲解基于org.apache.commons.fileupload包及org.apache.commons.io包实现文件上传;通过设置响应头属性并基于文件流方式实现文件下载。

Mekeater的博客 4240

FAST-LIVO2 源码精读(十六):接入自定义传感器——多雷达适配与内外参标定

本文是「FAST-LIVO2 激光-惯性-视觉里程计源码精读」专栏第十六篇。上一篇拆解了中每个关键参数的物理含义与调参路径,并反复强调外参RclPcl与时间偏移配错即全局失效;本篇承接这一悬念,回答更前置的工程问题——如何把 FAST-LIVO2 接到一套全新硬件上:新雷达如何通过的类型分支适配、相机内参与畸变模型如何配置、两组外参与时间偏移如何标定出来并填入 YAML,最后给出一份落地检查清单。

PX4-SLAM-PNC 199

javaweb文件下载

javaweb文件下载 文件下载在web应用开发中属于基本且常用的功能,下载接口实现浏览器打开下载页面: package util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpSe...

Humbinal's Blog 319

樽海鞘优化算法详解:原理、实现与应用

本文详细介绍了樽海鞘优化算法(SSA)的原理、实现与应用。该算法模拟樽海鞘链式群体行为,将优化问题解空间映射为群体移动空间,通过领导者引导和追随者跟随的协作机制寻找最优解。文章从生物特性、数学模型到Python代码实现进行了系统阐述,包括种群初始化、位置更新公式和收敛因子等核心要素,并展示了算法在函数优化等领域的应用潜力。该算法具有结构简单、参数少、实现容易等特点,在多种优化问题上表现良好。

qq_42212808的博客 645

SOME/IP协议详解「1.1·面向服务与面向信号」

面向信号和面向服务的区别,和举例子

雪云飞星的博客 5654

JavaWeb文件下载

文件下载流 Javaweb下载就是向客户端相应字节数据。原来我们响应的都是html的字符数据,下载需要把一个文件变成字节数组,使用response.getOutputStream()来响应给客户端。 下载要求 两个头一个流 > Content-Type:你传递给客户端的文件是什么MIME类型,例如:image/pjpeg * 通过文件名称调用ServletCo...

SICAUliuy的博客 363

超临界二氧化碳再热再压缩布雷顿循环建模与先进控制

超临界二氧化碳布雷顿循环建模与先进控制研究 本文研究了超临界二氧化碳再热再压缩布雷顿循环系统的建模与控制。通过MATLAB/Simscape构建了包含压缩机、透平、回热器等关键组件的动态模型,并设计了基于模型预测控制(MPC)和自抗扰控制(ADRC)的多层控制策略。系统采用转速控制的压缩机、阀门开度控制的透平,以及可变热源加热器,实现了全动态分析。研究结果表明,MPC与ADRC混合控制方案相较于传统PID控制,功率超调降低至0.9%,效率波动控制在±0.08%,扰动恢复时间缩短至12秒。

AI的内部世界的博客 340

Javaweb 文件上传和下载

以上示例展示了如何借助 Apache Commons FileUpload 和 Commons IO 实现一个简洁版的文件上传与下载功能。虽然该实现相对基础,仍有许多可以优化和增强的空间,但它对于理解文件上传下载的核心流程与底层机制具有重要价值。通过这一案例,我们不仅掌握了表单数据的解析、文件流的处理等关键步骤,也为今后使用更高级的框架(如 Spring Boot 中的 Multipart 处理)以及集成第三方对象存储服务(如阿里云 OSS 或 MinIO)打下了扎实的基础。

weixin_43415514的博客 1859

DeepSmote:一种深度SMOTE方法

DeepSmote 一种全新的将深度学习与Smote相结合的过采样方法! 目前在许多领域已经被使用,值得大家关注学习!

走在深度学习前沿的小宋 1446

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

javaweb —— ——文件上传和下载

javaweb —— ——文件上传和下载 文章目录javaweb —— ——文件上传和下载一、如何实现文件上传二、文件上传的相关API1. Fileltem 接口2. DiskFileltemFactory 类3.ServletFileUpload 类实现文件上传实现文件下载 一、如何实现文件上传 要实现Web开发中的文件上传功能,通常需完成两步操作: -是在Web页面中添加上传输入项;二是在Servlet中读取上传文件的数据,并保存到本地硬盘中。接下来,本节将对这两步操作内容进行详细讲解。 由于大多数

weixin_54405545的博客 1849

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JavaWeb 文件下载

1.在intellij中创建web项目 2.在web中新建index.html 代码如下: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"/> <title>文件下载</title> </head> <body...

qq_38985065的博客 223

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JavaWeb下载文件

分析步骤 获取下载文件的URL请求路径 下载的文件名是什么? 想办法设置让浏览器能够支持下载我们需要的类型 创建下载文件的输入流将需要下载的文件读取 创建缓冲区 获取输出流(OutputStream)对象 用FileOutStream流将读取的文件写入到缓冲区 使用OutoutSream将缓冲区中的数据通过response响应回去给浏览器 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Servl

weixin_45608165的博客 789

Javaweb之文件上传与下载

Javaweb之文件上传与下载 1. 文件上传下载概述 1.1. 什么是文件上传下载 所谓文件上传下载就是将本地文件上传到服务器端,从服务器端下载文件到本地的过程。例如目前网站需要上传头像、上传下载图片或网盘等功能都是利用文件上传下载功能实现的。 文件上传下载实际上是两步操作,第一是文件上传,就是将本地文件上传到服务器端,实现文件多用户之间的共享,第二是文件下载,就是将服务器端的文件下载到本地磁盘。 1.2. 文件上传下载实现原理 首先,需要知道文件是如何实现上传及下载的。文件上传及下载实现原理如下: 文

qq_47897078的博客 3061

JavaWeb中HttpServletResponse实现文件下载

JavaWeb中HttpServletResponse实现文件下载 1.实现步骤 1. 1 要获取下载文件的路径 String realPath = "D:\\IdeaProjects\\javaweb-02-servlet\\response\\src\\main\\resources\\练.jpg"; 1. 2 找到下载的文件名称 String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1); 这里使用lastIndexO

lianlianmumu的博客 411

JavaWeb实现文件下载

一、前言 我们这里要说的文件下载是包括word文档、Excel表格、PPT、image图片的下载,因为我们是基于JavaWeb实现的,所以web前端的界面是在JSP中实现的,而后台的响应是通过Servlet来实现的。所以我们先简单了解一下Servlet。 二、Servlet Servlet 其实是由tomcat服务器来进行创建的,因为我们实现的是文件下载,所以离不开一个关键词ServletConfig,它是Servlet的配置对象 ,实现GenericServlet接口,它主要可用用来获取Servle

qq_48241564的博客 3377

JavaWeb之文件下载

超链接下载 1、超链接遇到浏览器无法识别的资源时,会自动下载; 2、超链接遇到浏览器能够识别的资源,则会直接显示; 3、如果想要让能够被识别的资源进行下载,则需要设置download属性 download属性: 规定浏览器进行下载。但有些浏览器并不支持。 download属性如果不设置值,则下载的文件名为默认文件名;如果设置了属性,则下载的文件名为download的属性值 下载 文件下载 Step...

qq_44783880的博客 179

javaweb下载文件

javaweb下载文件: 下面展示一些 代码片。 //1.获取文件的下载路径 String realPath = "E:\\word\\javaweb-02-serlvet\\response\\src\\main\\resources\\1.jpg"; System.out.println("下载文件的路径"+realPath); //2.下载的文件名是啥 String fileName = realPath.substring(real

qq_45786202的博客 371
上一篇: Oracle中集合的使用
下一篇: Java中对象的引用
午-夜
博客等级 码龄12年 95粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值