SpringMVC文件下载
<!--解决找不到“jquery-3.4.1.min.js”(静态资源访问)的问题
-->
<mvc:default-servlet-handler/>
方式1:如果去掉download就是查看图片
<a href="${pageContext.request.contextPath}/uploadfiles/${requestScope.filename}" download>下载</a>
方式2:通过程序编码(下载对话框)的方式实现下载 如果要激活下载对话框,必须设置响应头: 将"Content-Disposition"的值设置为"attachment" 如果要将文件传输到客户端,需要将文件转化为字节流(byte[])放在响应中 因此,下载文件其实是要修改http响应 在SpringMVC框架中,可以使用ResponseEntity表示HTTP响应:状态码,响应头和响应内容。因此,我们可以使用它来配置HTTP响应实现文件的下载
页面可以这样
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<fieldset><legend>文件上传成功</legend>服务器名称:${requestScope.filename}<br>文件描述:${requestScope.description}<br><a href="${pageContext.request.contextPath}/uploadfiles/${requestScope.filename}">查看图片</a><a href="${pageContext.request.contextPath}/uploadfiles/${requestScope.filename}" download>下载图片</a><a href="${pageContext.request.contextPath}/download/${requestScope.filename}">点击下载</a>
</fieldset>
</body>
</html>
控制器代码
@RequestMapping("/download/{filename}")public ResponseEntity<byte[]> download(@PathVariable String filename, HttpServletRequest request)throws IOException {
// 获取要下载文件字节流ServletContext servletContext = request.getServletContext();InputStream in = servletContext.getResourceAsStream("uploadfiles/" + filename);
//设置响应内容:将文件转换为字节数组byte[] body = new byte[in.available()];in.read(body);
// 设置响应头,激活下载框HttpHeaders headers = new HttpHeaders();headers.add("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename,"utf-8"));
// 设置响应状态为200HttpStatus statusCode = HttpStatus.OK;
// 根据页面内容、页面头、页面状态创建并跳转到该页面(实际返回的是下载文件数据)ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(body, headers, statusCode);return response;}
相关文章:
SpringMVC文件下载
<!--解决找不到“jquery-3.4.1.min.js”(静态资源访问)的问题 --> <mvc:default-servlet-handler/>方式1:如果去掉download就是查看图片 <a href"${pageContext.request.contextPath}/uploadfiles/${requestScope.filena…...
前端项目打包放到springboot项目时,访问不带index.html
当您的前端项目被打包并放到 Spring Boot 项目中时,如果想要通过访问不带 index.html 的路径来直接进入前端页面,您可以使用以下方法: 1,在 Spring Boot 项目中添加一个路由规则,将所有对特定路径的请求重定向到前端页…...
Tomcat注册为服务后,如何配置Tomcat内存大小
前提条件:tomcat已经注册为服务。 1.winR,输入regedit打开注册表 2.找到Tomcat注册表路径: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat80603.找到jvm内存配置路径: HKEY_LOCAL_MACHINE\SOFTW…...
C语言入门实战教程——嵌入式必备教程(2023年版最全最新整理)
一、初识C语言 C语言诞生于美国的贝尔实验室,由丹尼斯里奇(Dennis MacAlistair Ritchie)以肯尼斯蓝汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,C语言是一个功能简化的版本,它使C…...
Chatbot开发三剑客:LLAMA、LangChain和Python
聊天机器人(Chatbot)开发是一项充满挑战的复杂任务,需要综合运用多种技术和工具。在这一领域中,LLAMA、LangChain和Python的联合形成了一个强大的组合,为Chatbot的设计和实现提供了卓越支持。 首先,LLAMA是…...
【Spring之AOP底层源码解析】
文章目录 一、动态代理1.1、ProxyFactory1.2、Advice的分类1.3、Advisor的理解 二、创建代理对象的方式2.1、ProxyFactoryBean2.2、BeanNameAutoProxyCreator2.3、DefaultAdvisorAutoProxyCreator 三、Spring AOP的理解3.1、AOP中的概念3.2、Advice在Spring AOP中对应API3.3、T…...
【UCAS自然语言处理作业二】训练FFN, RNN, Attention机制的语言模型,并计算测试集上的PPL
文章目录 前言前馈神经网络数据组织Dataset网络结构训练超参设置 RNN数据组织&Dataset网络结构训练超参设置 注意力网络数据组织&Dataset网络结构Attention部分完整模型 训练部分超参设置 结果与分析训练集Loss测试集PPL 前言 本次实验主要针对前馈神经网络࿰…...
RabbitMQ消息模型之Sample
Hello World Hello World是官网给出的第一个模型,使用的交换机类型是直连direct,也是默认的交换机类型。 在上图的模型中,有以下概念: P:生产者,也就是要发送消息的程序C:消费者:消…...
安全技术与防火墙
目录 安全技术 防火墙 按保护范围划分: 按实现方式划分: 按网络协议划分. 数据包 四表五链 规则链 默认包括5种规则链 规则表 默认包括4个规则表 四表 查询 格式: 规则 面试题 NFS常见故障解决方法 安全技术 入侵检测系统 (Intrusion Detection Sy…...
Windows系统搭建Appium 2 和 Appium Inspector 环境
前言 自 2022 年 1 月 1 日起,Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x,需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具,它带来了以下重要改进: …...
计算机应用基础_错题集_OutLook操作题_操作系统应用题_电子表格---网络教育统考工作笔记005
6、(说明:考生单击窗口下方的“打开[Outlook]应用程序”启动Outlook) 按以下要求保存草稿。 收件人:test_xiao_ming@163.com...
2023-11-26 LeetCode每日一题(统计子串中的唯一字符)
2023-11-26每日一题 一、题目编号 828. 统计子串中的唯一字符二、题目链接 点击跳转到题目位置 三、题目描述 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。 例如:s “LEETCODE” ,则其…...
HTML新手入门笔记整理:特殊符号
音标符 音标符 字符 Construct 输出结果 ̀、 a a à ́′ a a án ˆ a a â ̃~ a a ã ̀̀、 O O Ò ́́′ O O Ó ˆ O O Ô ̃~ O O Õ 字符 显示结果 描述 实体名称 实体编号 空格 <…...
物联网中基于信任的安全性调查研究:挑战与问题
A survey study on trust-based security in Internet of Things: Challenges and issues 文章目录 a b s t r a c t1. Introduction2. Related work3. IoT security from the one-stop dimension3.1. Output data related security3.1.1. Confidentiality3.1.2. Authenticity …...
tex2D使用学习
1. 背景: 项目中使用到了纹理进行插值的加速,因此记录一些自己在学习tex2D的一些过程 2. 代码: #include "cuda_runtime.h" #include "device_launch_parameters.h" #include <assert.h> #include <stdio.h>…...
[iOS开发]UITableView的性能优化
一些基础的优化 (一)CPU 1. 用轻量级对象 比如用不到事件处理的地方,可以考虑使用 CALayer 取代 UIView CALayer * imageLayer [CALayer layer]; imageLayer.bounds CGRectMake(0,0,200,100); imageLayer.position CGPointMake(200,200…...
使用opencv实现图像滤波
1 图像滤波介绍 滤波是信号和图像处理中的基本任务之一,其旨在有选择地提取图像的某些特征,可以用于在给定应用程序的上下文中传达重要信息,例如,去除图像中的噪声、提取所需的视觉特征、图像重采样等。 1.1 图像滤波理论 图像…...
Swagger在php和java项目中的应用
Swagger在php和java项目中的应用 Swagger简介Swagger在java项目中的应用步骤常用注解 Swagger在php项目中的应用 Swagger简介 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 总体目标是使客户端和文件系统作为服务器以…...
java科学计数法表示数值
Background 大多数计算器及计算机程序用科学记数法显示非常大和非常小的结果;但很多时候,我们需要做一个统一,要么全部以科学计数法输出,要么就全部显示为普通计数。注意:这里对大于等于1的数据做了特殊处理࿰…...
基于C#实现树状数组
有一种数据结构是神奇的,神秘的,它展现了位运算与数组结合的神奇魅力,太牛逼的,它就是树状数组,这种数据结构不是神人是发现不了的。 一、概序 假如我现在有个需求,就是要频繁的求数组的前 n 项和&#x…...
nix 项目贡献指南:从代码提交到发布的完整流程
nix 项目贡献指南:从代码提交到发布的完整流程 【免费下载链接】nix Rust friendly bindings to *nix APIs 项目地址: https://gitcode.com/gh_mirrors/nix/nix nix 是一个为 Rust 开发者提供友好的 *nix 系统 API 绑定的开源项目。本指南将带你了解从发现问…...
AI时代,普通人必须知道的10个法律与版权风险
生成式AI的法律风险未经授权使用受版权保护的数据训练AI模型可能引发侵权诉讼。AI生成内容若与原创作品高度相似,可能被判定为抄袭。深度伪造与肖像权利用AI换脸或合成声音可能侵犯他人肖像权、名誉权。未经许可使用公众人物形象牟利,可能面临高额赔偿。…...
PyTorch 2.8开源大模型镜像实操:HuggingFace模型本地化API服务封装
PyTorch 2.8开源大模型镜像实操:HuggingFace模型本地化API服务封装 1. 镜像环境概览 1.1 硬件与软件配置 这个基于PyTorch 2.8的深度学习镜像经过RTX 4090D显卡和CUDA 12.4的深度优化,为大型模型推理和训练提供了开箱即用的环境。主要配置包括&#x…...
国产AI Agent爆发:从“龙虾风暴”看企业级Agent工具选型与实战指南
摘要: 作为一名在企业架构领域摸爬滚打15年的老兵,我见证了从SOA到微服务,再到如今AI原生架构的数次演进。2026年3月底,国内AI圈掀起的“龙虾风暴”标志着Agent工具正式进入爆发期。然而,对于IT负责人和CIO而言&#x…...
十分钟微调Qwen2.5-7B实战:效果立现,适合新手的完整教程
十分钟微调Qwen2.5-7B实战:效果立现,适合新手的完整教程 1. 准备工作与环境介绍 1.1 为什么选择Qwen2.5-7B进行微调 Qwen2.5-7B是阿里云推出的开源大语言模型,7B参数规模在单卡上就能流畅运行。相比全量微调,使用LoRA技术可以在…...
OpenClaw硬件监控:Gemma-3-12b-it分析传感器数据并预警
OpenClaw硬件监控:Gemma-3-12b-it分析传感器数据并预警 1. 为什么需要AI驱动的硬件监控? 去年夏天,我的家用服务器因为CPU散热器故障导致过热关机,丢失了正在处理的科研数据。这件事让我开始思考:传统的阈值告警太被…...
测试流程图显示
一、原理解析 / 概念介绍 1.1 自动化序列化流水线 hive_generator 处于开发链路的“后台”,负责将 Dart 对象转换为 Hive 识别的二进制流编码逻辑。 #mermaid-svg-bbx9YEu5DFSBhCuG{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;…...
hadoop+spark+hive租房推荐系统 租房数据智能分析平台 Django框架 可视化 Requests爬虫
1、项目介绍 技术栈 Python语言、Django框架、MySQL数据库、Echarts可视化 工具、requests爬虫框架,用于58同城租房数据的采集清洗、多维度分析与可视化展示。功能模块租房数据可视化大屏租房数据管理系统首页租房数据条件查询评论功能租房数据展示项目…...
OpenClaw新手入门:千问3.5-9B镜像一键部署与初体验
OpenClaw新手入门:千问3.5-9B镜像一键部署与初体验 1. 为什么选择这个组合? 去年冬天,我第一次在本地尝试用OpenClaw自动整理电脑上的照片。当时对接的是GPT-3.5,每次识别图片内容都要消耗大量token,一个月下来账单让…...
AI Memory 全景解析:让 Agent 真正记住你
AI Memory 全景解析:让 Agent 真正"记住"你 你有没有遇到过这种场景:明明昨天告诉 AI 助手你喜欢简洁的代码风格,今天它又开始写冗长的注释;或者你费心纠正了一个错误,下次对话它照犯不误。这就是 AI 没有记…...
