springmvc中的文件下载

单细胞专题(1) | 单细胞转录组研究样本准备指南(上) 单细胞RNA测序(scRNA-seq)是目前最前沿,能进行大规模实验的转录组研究技术,为理解细胞组成和动态生物学过程提供了很多新的见解。单细胞研究已经为我们理解发育过程,老化和疾病(如癌症)等提供了大量数据。在这里,小编主要就前期的样本准备与保存需注意问题给大家进行讲解,以备大家在不同的研究场景和研究背景下,走好单细胞转录组学研究的第一步。 阅读详情

定义

用户将服务器中的文件下载到本机的过程

开发文件下载

  • 定位哪些文件需要下载
  • 将需要下载的文件放入指定的目录中
  • 开发一个页面提供一个文件下载的链接
  • 开发下载Controller

文件下载代码示例

需要下载的文件在web下的download下的aa.txt;

开发的页面:

<body>
    <h2>文件下载</h2>
    <a href="${pageContext.request.contextPath}/file/download?fileName=aa.txt">aa.txt</a>
  </body>

controller中的代码

@RequestMapping("download")
    public void download(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
        System.out.println("下载文件的名称 "+fileName);
        //1.根据下载相对目录,下载目录在服务器部署之后的绝对目录
        String realPath = request.getSession().getServletContext().getRealPath("/download");
        //2.通过文件输入流读取文件
        FileInputStream is = new FileInputStream(new File(realPath, fileName));
        //3.获取响应输出流
        response.setContentType("text/plain;charset=utf-8");//控制流的编码
        ServletOutputStream os = response.getOutputStream();
        //4.附件下载(默认是下载并在浏览器打开)
       		//inline是在线打开,attachment是下载;默认是inline
        	//如果文件浏览器打不开,会自动转为attachment
        response.setHeader("content-disposition","attachment;fileName="+fileName);
        //5.处理流的复制
        int len;                        //读取长度
        byte[] b = new byte[2048];      //缓冲区
        while(true){
            len = is.read(b);
            if(len==-1) break;
            os.write(b,0,len);
        }
        //释放资源
        is.close();
        os.close();
    }

控制文件在线打开或附件下载

在jsp文件中,传一个openStyle的参数;controller接收参数并控制下载方式。
jsp文件:

<h2>文件下载</h2>
    <ul>
      <li>aa.txt <a href="${pageContext.request.contextPath}/file/download?fileName=aa.txt">在线打开</a> <a href="${pageContext.request.contextPath}/file/download?fileName=aa.txt&openStyle=attach">附件下载</a></li>
      <li>bb.jpg <a href="${pageContext.request.contextPath}/file/download?fileName=bb.jpg">在线打开</a> <a href="${pageContext.request.contextPath}/file/download?fileName=bb.jpg&openStyle=attach">附件下载</a></li>
      <li>cc.txt <a href="${pageContext.request.contextPath}/file/download?fileName=cc.txt">在线打开</a> <a href="${pageContext.request.contextPath}/file/download?fileName=cc.txt&openStyle=attach">附件下载</a></li>
    </ul>

注意在附件下载的url中增加了openStyle参数的传值操作;
controller文件:

@RequestMapping("download")
    public void download(String openStyle,String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
        openStyle = openStyle==null?"inline":"attachment";

        System.out.println("下载文件的名称 "+fileName);
        //1.根据下载相对目录,下载目录在服务器部署之后的绝对目录
        String realPath = request.getSession().getServletContext().getRealPath("/download");
        //2.通过文件输入流读取文件
        FileInputStream is = new FileInputStream(new File(realPath, fileName));
        //3.获取响应输出流
        response.setContentType("text/plain;charset=utf-8");//控制流的编码
        ServletOutputStream os = response.getOutputStream();
        //4.附件下载(默认是下载并在浏览器打开)
        response.setHeader("content-disposition",openStyle+";fileName="+URLEncoder.encode(fileName,"UTF-8"));
        //5.处理流的复制
        int len;                        //读取长度
        byte[] b = new byte[2048];      //缓冲区
        while(true){
            len = is.read(b);
            if(len==-1) break;
            os.write(b,0,len);
        }
		//或者使用IOUtils对流进行操作,使用FileUtils对文件进行操作
		//IOUtils.copy(is,os);
		//IOUtils.closeQuietly(is);
		//IOUtils.closeQuietly(os);
        is.close();
        os.close();
    }

解决文件名中文乱码和使用IOUtils来进行文件下载

 @RequestMapping("download")
    public void download(String openStyle,String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
        openStyle = openStyle==null?"inline":"attachment";

        System.out.println("下载文件的名称 "+fileName);
        //1.根据下载相对目录,下载目录在服务器部署之后的绝对目录
        String realPath = request.getSession().getServletContext().getRealPath("/download");
        //2.通过文件输入流读取文件
        FileInputStream is = new FileInputStream(new File(realPath, fileName));
        //3.获取响应输出流
        response.setContentType("text/plain;charset=utf-8");//控制流的编码
        ServletOutputStream os = response.getOutputStream();
        //4.附件下载(默认是下载并在浏览器打开)
        response.setHeader("content-disposition",openStyle+";fileName="+ URLEncoder.encode(fileName,"UTF-8"));
        //5.处理流的复制
//        int len;                        //读取长度
//        byte[] b = new byte[2048];      //缓冲区
//        while(true){
//            len = is.read(b);
//            if(len==-1) break;
//            os.write(b,0,len);
//        }
//        is.close();
//        os.close();
        //操作IO流使用IOUtils,操作文件的用FileUtils
        IOUtils.copy(is,os);
        IOUtils.closeQuietly(is);
        IOUtils.closeQuietly(os);

    }
别再傻傻分不清了!Anaconda和Miniconda到底选哪个?附保姆级安装与镜像源配置(Windows/Mac) 本文详细解析了Anaconda和Miniconda的核心差异,包括体积、预装内容、系统资源占用等关键维度,并提供了针对不同需求的决策框架。附有Windows和Mac双平台的详细安装与配置指南,帮助用户根据实际需求选择最适合的conda工具,提升开发效率。 阅读详情

相关推荐

快速理解STLink引脚图中复位引脚作用

深入讲解STLink引脚图中复位引脚的实际用途,帮助开发者快速掌握其在调试与下载过程中的关键作用,结合stlink引脚图理解更高效。

weixin_32324637的博客 1326

springMVC MultipartResolver 及 apache IOUtils

最近在做一个文件改造功能,把项目下面的pdf文件放到数据库去,用流比较多,所以写个博客记录下 首先说MultipartResolver MultipartResolver 用于处理文件上传,当收到请求时 DispatcherServlet 的checkMultipart() 方法会调用 MultipartResolver 的isMultipart() 方法判断请求中是否包含文件。如果请求数...

zhang1088632743的博客 228

电压抬升电路设计

一、实验目的 掌握集成运放电压放大电路设计基本方法。 掌握基本仪器使用方法(电源、信号发生器、示波器)。 二、实验内容及结果 实验内容 基于集成运放设计一传感器信号采集电路。传感器输出信号在±50mV,频率为100Hz以内,模数转换器允许输入电压在0~5V,要求设计传感器与模数转换器之间的信号采集电路,实现传感器信号放大10倍,并适合模数转换器的输入。模数转换器的输入电阻为1KHz,设计电路时,可使用1KHz电阻作为信号采集电路负载,代替模数转换器。 实验具体要求如下: (1)确定电路形式,说明电压转

Safaearth的博客 4万+

Spring IOUtils:流式IO操作的得力助手

Spring框架中的IOUtils类是一个实用工具类,它提供了一系列静态方法,用于简化IO(输入/输出)操作。IOUtils类的主要作用是减少代码冗余,提高代码的可读性和可维护性。通过IOUtils类,开发者可以更方便地处理文件、网络流等IO操作。

m0_51176516的博客 991

使用openMVS对样例数据进行重建

openMVS根据github上的步骤进行编译。注意,如果没有GPU,用不了CUDA的话,那么需要在openMVS目录下找到CmakeLists.txt文件,把CUDA设置为OFF: SET(OpenMVS_USE_CUDA OFF CACHE BOOL "Enable CUDA library") 可执行的文件生成在openMVS_build/bin/里面,在openMVS_build文件夹下打开终端,按照顺序执行如下命令即可逐步重建。其中,-w 设置的是数据的总路径,-i 后接输入的文件名,-o

YuhsiHu的博客 2883

从HAL库SPI状态机机制剖析:为什么你的DMA发送会卡在BUSY状态?

本文深入剖析了STM32 HAL库中SPI状态机机制导致DMA发送卡在BUSY状态的常见问题。通过分析状态机设计原理,揭示了混合使用阻塞方式和DMA方式时状态切换冲突的根源,并提供了三种实战解决方案:正确配置SPI中断、使用HAL_SPI_Abort()函数以及手动管理状态机,帮助开发者实现稳定流畅的SPI DMA通信。

bush的博客 268

使用apache的IOUtils类完成--文件下载(FileDownload)程序

---------------------- package com.test;    import java.io.File;  import java.io.FileInputStream;  import java.io.FileNotFoundException;  import java.io.FileOutputStream;  import java.io.IOExcept

vincent 2257

jane street market prediction 冠军方案 奇巧淫技与topline链接整理(3/3)

目录前言将income 作为loss(优化目标)读取数据,定义优化目标模型训练与微调提交结果多目标学习Topline整理AE+MLP (rank10)Current 17th solution: Ensembles of deep (49 layer) MLPsmixup augmentation: a way to learn from trades with weight=0 (rank4)My (perhaps) over-complicated LSTM solutionCurrent 62nd .

weixin_51484067的博客 2639

vue接收文件流格式文件进行下载导出

代码】vue接收文件流格式文件进行下载导出。

newbaby123的博客 338

VS2019编译配置Easy3D

VS2019编译配置Easy3D

dayuhaitang1的博客 2596

【教程4>第8章>第10节】OFDM完整通信链路项目的FPGA开发4——插入导频

本文介绍了基于MATLAB和Verilog的导频插入设计与实现方法。首先回顾了MATLAB中导频插入的算法实现,展示了每32个数据插入一个导频的设计。接着详细说明了Verilog硬件实现方案,包括导频序列定义、计数器设计、FIFO模块等关键部分。通过仿真测试验证了设计的正确性,输出了插入导频后的序列、导频序列以及调整时序后的序列。最后提供了相关视频教程资源,帮助读者理解设计过程。该设计实现了数据与导频的精确插入,为OFDM等通信系统开发提供了实用参考。

FPGA/MATLAB学习教程/源码/项目合作开发 395

IOl流写一段文本存到本地文件中

2 写出数据 细节: write方法的参数是整数 但是实际上写到本地文件中的是整数在ASCTT对应的字符(eg 97=a)细节2 如果文件不存在 会创建一个新的文件 但是要保证父级路径是正确的。细节1 参数是字符串表示的路径或者File对象都是可以哦。一、FileOutputStream中的小细节。细节3 如果文件已经存在 则会清空文件。

qq_65142821的博客 237

Cadence 开发合集【总目录】

专栏主要介绍Cadence原理图和PCB信号完整性电源完整性仿真相关的内容,更加注重实操,以帮助大家轻松上手并不断提高;在开始专栏的更新前,博主先列出专栏的大纲,以供大家参考。大家直接点击大纲中的蓝色标题即可轻松传送。 ............

fydar的博客 1万+

SpringMVC中的文件上传和下载

一旦设置了enctype为multipart/form-data,浏览器即会采用二进制流的方式来处理表单数据,而对于文件上传的处理则涉及在服务器端解析原始的HTTP响应。文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作。前端表单要求:为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。

fj123321666的博客 1084

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SpringMVC | SpringMVC中的 “文件上传和下载”

目录: 一、文件上传 1.1 文件上传“概述” 1.2 文件上传“具体配置” : “前端”中配置“文件上传” ( type=“file” + 满足3个条件 ) “后端”中配置“文件上传” ( 配置id为“CommonsMultipartResolver”的bean + 配置“文件上传”的“约束条件” + 通过“MultipartFile接口”参数接收“传来的文件”) 1.3 文件上传“应用案例” : 文件上传 (存储在“相对路径”) 文件上传 (存储在“绝对路径”) 二、文件下载 .....

m0_70720417的博客 3270

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SpringMVC实现文件下载时,请求路径中的扩展名被省略

问题描述   问题是这样的,我写了一个DownloadController,用来处理下载请求,预期效果如下:   客户端浏览器在访问URL --> http://localhost:8080/ssm/download/demo.txt,就会下载demo.txt文件。   代码如下: @Controller public class DownloadControll...

JOKER0707的博客 692

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SpringMVC中的文件下载

1,首先springMvc框架的环境需要有 2。jsp页面: 3.后台请求:upload.action

球球博客 161

springMVC中的文件下载

直接上代码 @RequestMapping("download") @ResponseBody public void downloadChapter(HttpServletRequest request,HttpServletResponse response,String musicName) throws Exception{ //首先为了保险起见,打印一接收的文件名 Syste...

wazk2008的博客 753

基于SpringMVC中的文件上传和下载

localhost:8080/项目名/images/图片名。使用ResponseEntity实现下载文件功能。

H_JH123的博客 325

SpringMVC中的文件的上传和下载问题

SpringMVC中的文件的上传和下载问题 一、文件的上传 1、导包 SpringMVC的文件上传依赖于Apache的FileUpload组件 <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId>

weixin_47084857的博客 368

SpringMVC中的文件上传下载详解

SpringMVC中的文件上传下载 SpringMVC的文件上传操作: 需要导入fileupload包和io的包 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> ...

qq_40245464的博客 239

SpringMVC中的文件上传与下载

文件上传: apache上传组件方案 添加依赖 <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifac...

shaorouAA的博客 267

springMVC中的文件上传和下载

【代码】springMVC中的文件上传和下载。

ning的博客 721

SpringMVC构架中的文件上传下载

SpringMVC构架中的文件上传下载 jar包 CommonsMultipartResolver解析器依赖commons-fileupload和commons-io,加入如下jar包: web.xml配置 <?xml version="1.0" encoding="UTF-8"?> springmvc org.springframework.web.servlet.Dispa...

weixin_45473253的博客 125

springmvc中的文件下载以及文件上传

1.图片下载 ResponseEntity结果图片下载 @RequestMapping("/testDown") public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException{ //获取容器对象 ServletContext servletContext = session.getServletContext(); //获取真实路径 String r

xiaokuangkuang 277

SpringMVC中的文件上传与下载功能,以及虚拟目录的配置

SpringMVC中的文件上传与下载功能是通过MultipartResolver来实现的。MultipartResolver是SpringMVC框架中用于处理文件上传的接口,它可以将客户端上传的文件转换为MultipartFile对象,从而方便开发者对文件进行处理。

m0_66111719的博客 1092
上一篇: 使用samba实现linux和windows文件共享
下一篇: 采用自动种子的方式搭建sqlserver alwaysOn,和备份恢复模块
code_feien
博客等级 码龄7年 71粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值