当前位置: 首页 > news >正文

HttpServletResponse下载文件

写servlet类继承接口,重写doGet方法

前置:

将待下载文件放入项目下,此处将图片放在了resources目录下

步骤:

明确待下载文件路径:可以写绝对路径,因为默认的相对路径可能与实际存储路径不符

明确文件名称:可以截取 文件路径字符串,最后一个\之后的字符,即文件名,\需要转义,写为\\

设置内容格式:可以是图片等格式

设置可以下载文件的请求头:设置头字段,将内容作为附件处理。后面指定内容,文件名为我们的文件名

将文件转化为流:文件转为输入流的形式

写缓冲区:建立一个byte单位的缓冲区

写输出流:初始化一个输出流

将文件流读入缓冲区,输出流输出:

将文件流写入缓冲区,输出流输出,直到文件字节全部读入,输出完成

关闭输入输出流:保证安全性

package org.example.HttpServletResponse;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.Buffer;public class Respones extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String realpath = "D:\\IdeaProjects\\maven_empty\\HttpServletResponse\\src\\main\\resources\\AA.png";String Filename = realpath.substring(realpath.lastIndexOf("//") + 1);resp.setContentType("image/png");resp.setHeader("Content-Disposition", "attachment; filename=" + Filename);FileInputStream in = new FileInputStream(Filename);byte[] buffer = new byte[1024];ServletOutputStream out = resp.getOutputStream();int len = 0;while((len=in.read(buffer))!=-1){out.write(buffer, 0, len);}in.close();out.close();}
}

完成后,在项目的WEBINF-web.xml文件下注册servlet

运行后,更新同步maven完成打包

重新部署Tomcat里的包,运行后输入正确url即可

http://www.dtcms.com/a/536346.html

相关文章:

  • vue3的路由详解
  • Spring Boot 生产就绪特性浅析(一)
  • 如何做彩票网站信息手机上打开html的软件
  • 【图像处理基石】图像对比度增强入门:从概念到实战(Python+OpenCV)
  • 网站建设公司六安全国连锁装修公司加盟
  • 直播互动小程序端Web运营端接入指南
  • Java—抽象类
  • 坛墨网站建设wordpress 邀请
  • idc网站模版百度提交
  • 树莓派3B+降低功耗及恢复脚本
  • 开源项目解读4-高性能并发缓存库Ristretto
  • 《微信小程序》第五章:登录-API封装
  • MYSQL数据库入门操作
  • 青岛建设集团网站101工业设计有限公司
  • wordpress 网站上传到服务器错误怎么建设手机网站
  • MySQL 下载、安装及配置教程(Msi安装)
  • AWS CloudTrail 可观测最佳实践
  • 商城网站设计公司十大奢侈品排名
  • 建设部网站从哪登陆网站建设学什么书
  • STM32学习(MCU控制)(NVIC)
  • C++11新特性:强类型枚举/编译期断言/元组
  • 个人做网站的注意事项动漫做暧视频网站
  • 高并发电商架构设计与落地:从微服务拆分到全链路优化
  • 无人机电调芯片替换全解析:从 AM32 架构到 STM32F072、GD32E230 与 AT32F421 的实战对比
  • 郴州市建设网站ps软件下载免费中文版
  • 选择扬中网站建设做电商一个月可以赚多少钱
  • flutter开发的音乐搜索app
  • 介绍一下Ribbon的工作原理
  • Linux系统中安装部署开源的建站、博客工具——Halo
  • 【论文精读】STREAM:视频生成模型的时空评估新指标