首页 > 其他分享 >案例_软件下载分析、案例_代码实现

案例_软件下载分析、案例_代码实现

时间:2022-08-16 09:45:07浏览次数:35  
标签:代码 request content 案例 超链接 软件 filname response 下载

案例_软件下载分析

文件下载:

  页面显示超链接

  点击超链接后弹出下载提示框

  完成图片文件下载

 

分析:

 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能解析弹出下载提示框,不满足需求

 任何资源都必须弹出下载提示框

 使用响应头设置资源的打开方式

  content - disposition:attachment;finlename = xxx

 

步骤:

  定义页面,编辑超链接href属性,指向Servlet,传递资源名称Filename

  定义Servlet

      1,获取文件名称

      2,使用字节输入流加载文件进内存

      3,指定response的响应头;content - disposition:attachment;finlename = xxx

      4,将数据写出response输出流

案例_代码实现

@WebServlet(value = "/DownloadServlet")
public class DownloadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取请求参数
String filname = request.getParameter("filename");
// 使用字节输入流加载文件进内存
// 找到文件在服务器中的真实路径
ServletContext context = this.getServletContext();
String realPath = context.getRealPath("/img/" + filname);
// 用字节流关联
FileInputStream fis = new FileInputStream(realPath);
// 设置响应头
String mimeType = context.getMimeType(filname);
response.setHeader("content-type",mimeType);
// 设置响应头打开方式
response.setHeader("content-disposition","attachment;filename="+filname);


// 读写
ServletOutputStream sos = response.getOutputStream();
byte[] bytes = new byte[1024 * 8];
int len =0;
while ((len= fis.read(bytes))!=-1){
sos.write(bytes,0,len);
}
fis.close();
}
}

标签:代码,request,content,案例,超链接,软件,filname,response,下载
From: https://www.cnblogs.com/ssr1/p/16590496.html

相关文章

  • Ubuntu20.04下微信、QQ、腾讯会议等常用软件的安装
    使用Ubuntu系统的一大痛点就是没有Windows下微信、QQ、腾讯会议等常用软件的适配,好在随着国产linux系统优麒麟UbuntuKylin的发展,这些软件也逐渐有了deb安装包,方便我们在U......
  • CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)
    CVE-2015-1635-HTTP.SYS远程执行代码漏洞(ms15-034)一、今日目标:复现一个代号为MS15-034的漏洞。二、漏洞描述:在2015年4月安全补丁日,微软发布的众多安全更新中,修复了HTTP......
  • 如何在 SAP Spartacus 中编写 ASM-Compatible 的代码
    要编写与ASM兼容的代码,开发人员需要使用UserIdService中的takeUserId()函数来确定OCC调用中使用的userId。这通常在一个服务中完成,该服务调度一个在有效负载中包......
  • Python爬虫之xpath语法及案例使用
    Python爬虫之xpath语法及案例使用----钢铁侠的知识库2022.08.15我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数......
  • ROBCOM 2022 代码实录
    太久没有写博客了水一篇,仅记录一下暑期裸考参加的两场2022RoboCom,半年来都在忙着读联考和考研,题解没有时间写了QAQ,期待回归。省赛RC-u1#include<bits/stdc++.h>......
  • 代码审计(Java)——WebGoat_Xss
    一、写在前面刚刚入职,适应了几天后抓紧开始学习,毕竟学无止境且自己太菜了……面试的时候,负责人问了我一些关于Java代审的问题,不过之前接触的更多是php的代审。熟......
  • 31岁转行软件测试,目前35了,分享一些我的经历和感受
    互联网是一个有发展空间行业,完全靠技术实力说话,只要你在大学多用点心,学历也不是太差,总能找到一份不错的工作。我身边有很多想转行做测试的朋友,每天我也会收到很多人在......
  • 博客园代码美化css
     .cnblogs_codepre{font-family:CourierNew!important;font-size:15px!important;word-wrap:break-word;white-space:pre-wrap;}.cnblogs_codespan{fo......
  • pdf编辑软件推荐
    AcrobatProDC2022forMac是Mac平台上一款非常优秀的pdf编辑软件,acrobatdc版拥有创建pdf、编辑pdf、导出pdf、注释、组织页面、增强扫描、保护、准备表单、合并文件、......
  • CAD绘图软件CADintosh推荐
    很多用户都在使用CAD绘图软件CADintoshXMac版吧?今天来分享CADintoshXforMa版,新增查找并替换线宽,查找并替换组,查找和替换图层,改进的DXF和DWG导入,选项禁用DXF预处理等新......