java web中文名文件下载乱码处理

网页一键下载多个远程文件并自动合成ZIP包(Java原生实现) 点击网页上的按钮,就能从多个HTTP URL地址批量拉取文件,保留原始路径结构,全部存入本地临时目录后,用纯Java标准库(java.util.zip)打包成ZIP,最后直接触发浏览器下载。配套的test.html页面开箱即用,含导出按钮和简单交互逻辑;整个项目基于Maven构建,已配置完整Eclipse工程文件(.project、.classpath等),源码集中在src/main/java下,不依赖Apache Commons Compress、Zip4j等第三方压缩组件。适合嵌入轻量Web后台,用于日 阅读详情

ie,edge,chrome浏览器中文名文件下载乱码问题处理

在网上查阅资料,以及根据自己这边实际的需求,来解决编码问题,以及在edge遇到的坑,不同的浏览器针对编码也不一样,做一次转码就顺利解决问题了,直接上代码

    @ApiOperation(value = "批量合成导出音频下载", notes = "批量合成导出音频下载")
    @RequestMapping(value = "/expoxt/download/file", method = RequestMethod.GET)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "filePath", value = "返回的文件名", dataType = "int", paramType = "query", example = "1.zip", required = true),
            @ApiImplicitParam(name = "taskName", value = "任务Name", dataType = "string", paramType = "query", required = true)
    })
    public ResponseEntity<byte[]> audioDetailTemplateDownloadZip(HttpSession session,String filePath,String taskName, HttpServletRequest request) throws Exception {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        String userAgent = request.getHeader("User-Agent");
        String fileName = taskName + ".zip";;
        if (userAgent.contains("Edge")) {
            //edge浏览器
            fileName = URLEncoder.encode(fileName, "utf-8");
            headers.add("Content-disposition", "attachment;filename="+fileName);
        } else if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
            //IE浏览器处理
            headers.add("Content-disposition", "attachment;filename="+new String(fileName.getBytes("gb2312"), "iso-8859-1"));
        } else {
            //非IE、edge浏览器的处理
            headers.add("Content-disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"), "iso-8859-1"));
        }
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(new File(filePath)), headers, HttpStatus.OK);
    }

taskName,前端那边传过来的时候已经做了编码,框架是ssm,打断点查看taskName接收到的值已经解码了,这应该是框架本身解码了,这里特别注意的是edge浏览器,他的中文名需要在编码一次,然后放到header中,这样下载才不会乱码,其他浏览器就需要改变编码就行了

这里适配中英文下载,主要是想记录下自己遇到的坑,写的比较简单

1、符号回归:原理、应用与实践 本文全面介绍了符号回归(Symbolic Regression)的原理、发展历程、核心算法及其在科学与工程领域的广泛应用。文章从基本概念出发,详细阐述了基于遗传编程的符号回归机制,并探讨了其在游艇水动力学、化学过程、锂离子电池、生物医学等多个领域的实际应用。同时,博文还涵盖了高级技术如知识集成、系数优化、预测区间计算及微分方程发现等内容,对比了开源与商业软件工具,并展望了未来发展趋势,旨在为研究人员和从业者提供一本实用的符号回归指南。 阅读详情

相关推荐

如何根据芯片手册时序图编写驱动程序

如何根据芯片手册时序图编写驱动程序 对于电子开发者来说,刚刚拿到一个芯片,常用的芯片可以参考网上的例程来做深入了解,对于一个不常用的芯片来说,Datasheet几乎是使用芯片的唯一的资料,所以根据Datasheet时序图写出对应的驱动程序就尤为重要。 本文根据一个简单的例子来阐述根据时序图来编写对应的程序过程。旨在讲解对于初学者应该怎么利用芯片的时序图编写符合要求的底层驱动程序(老鸟请跳过)。 下载芯片的Datasheet,(个人常用http://www.21icsearch.com/)如..

weixin_36447711的博客 1万+

Java下载文件时文件名中的中文变成下划线,其他正常

将 utf-8 转换成ISO8859-1 编码 response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("utf-8"),"ISO8859-1")); 转载于:https://www.cnblogs.com/yang-xiansen/p/11316...

weixin_30924087的博客 2362

gem5 prefetcher

最近在gem5上做预取实验,添加自己的预取算法,这里采用hardware stream prefetcher , 修改了几个bug才给实验调试通过,发文记录下实验过程。 gem5上添加自己的预取算法步骤: (1)路径gem5-master/configs/common/Caches.py下,开启预取:class L1Cache(Cache): assoc = 2 tag_late

编程邦 3843

ServletContext对象的使用与文件下载案例

ServletContext对象: 1. 概念:代表整个web应用,可以和程序的容器(服务器)来通信 2. 获取: 1. 通过request对象获取 request.getServletContext(); 2. 通过HttpServlet获取 this.getServletContext(); 3. 功能: 1. 获取MIME类型: * MIME类型:在互联网通信...

weixin_44251578的博客 266

YOLOv5入门实践(2)——手把手教你利用labelimg标注数据集

YOLOv5入门实践第2步,手把手教你使用labelimg标注数据集

路人贾的博客 1万+

Autosar Dcm配置-App到Boot的跳转及1002回复配置及实现-基于ETAS软件

在软件刷写流程中,上位机(诊断仪)发送1002后,APP检查允许跳转boot后,在特定的ram(软复位不清除)写入指定置后通过触发软件复位来跳转到boot的。在APP跳转到Bootloader时,1002的回复有两种方式,一种是APP直接回复,然后跳转,另一种是APP回复NRC78,然后跳转,在Boot中回复。本文介绍这两种方式的实现。如果是在APP中回复,可以少发一个0x78,整体跳转时间可能会少一些。但是如果诊断在收到5002之后立马请求其他的服务,可能出现boot正在初始化而未正常接收到报文。

赞的博客 1554

Java 下载文件名乱码

java web应用文件下载(包括中文文件名乱码处理) 标签: javawebstringnullbyteie           [Java] view plain copy  print?  Java web下载文件功能的确很简单。如下代码片段   [Java] view plain copy    print? ...

aiyan2001 232

STM32_HAL库—PWM产生指定个数

(一)CubeMX设置: 1. 晶振配置(72M) 2. 引脚配置 3. 中断配置 4. 配置及实现方式 由上推出公式: 机器周期: (72MHz / 36) = 2MHz = 0.5us PWM周期: 0.5 * 100 = 50us = 20kHz 5. 主函数调用PWM函数 HAL_TIM_PWM_Start_IT(&htim3, TIM_CHANNEL_2); //此处一句后可直接进入中断 6. PWM溢出回调函数 void HAL_TIM_PWM_PulseFinished

5525

java 文件下载 文件名称中文不显示

String fileName = “文件名称.doc” try { String fileName = new String(downFileName.getBytes(), “ISO-8859-1”); response.setHeader(“Content-Disposition”, “attachment;fileName=”+ fileName);

zhlin110228323的专栏 7159

真题库系列之 CCF GESP 2025年12月认证 Python 1级真题含正确答案与解析

学生通过计算机基础知识的学习,了解计算机的构成与操作,以及计算机的发 展历程。通过编程基础知识以及语句的掌握,可以独立完成简单功能的顺序结构、 分支结构、循环结构的程序。

iCloudEnd的博客 315

[网络安全自学篇] 六十八.WannaCry勒索病毒复现及分析(二)MS17-010利用及病毒解析

这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了通过Python利用永恒之蓝漏洞加载WannaCry勒索病毒,并实现对Win7文件加密的过程,但过程较为复杂,为什么不直接利用永恒之蓝呢?所以,这篇文章将直接分享MSF利用MS17-010漏洞进行反弹Shell,再上传勒索病毒进行实验复现,并详细讲解WannaCry勒索病毒的原理。基础性文章,希望对您有所帮助。

杨秀璋的专栏 1万+

java 下载中文名_java 文件下载支持中文名称的实例

实例如下所示:/*** 文件下载* @param filePath 文件路径* @param fileName 文件名称*/public void download(String filePath,String fileName){try {//支持中文fileName = URLEncoder.encode(fileName,"UTF-8");HttpServletResponse respo...

weixin_34340606的博客 301

YOLO26改进策略【损失函数篇】| AAAI 2025 SD Loss,基于目标尺度动态调整尺度损失和位置损失的影响系数,减少 IoU 标签波动

在红外小目标检测任务里,基于交并比的损失存在波动问题,像边界框(BBox)标签的IoU损失波动最高可达86%,较小目标的IoU损失稳定性更差,严重影响模型稳定性和回归效果。同时,现有损失函数没有充分考虑不同目标尺度下对尺度和位置的敏感度差异,,并且掩码标签的位置损失在处理漏检物体时难以收敛,容易产生误报。这些问题限制了模型在不同尺度目标上的检测性能,为解决这些问题,提出了损失函数。

Limiiiing的博客 393

JSP打开一个CHM的文件,但文件是在浏览器中乱码的形式打开

response.addHeader("Content-Disposition", new String(("attachment; filename=" + filename).getBytes("GBK"), "ISO-8859-1")); // 针对中文文件名 chm application/mshelp javaE...

Mstr838Wind的专栏 218

jre9下载 jdk9

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java中下载功能实现

下载初步学习 下载就是向客户端响应字节数据! 把一个文件变成字节数组,使用response.getOutputStream()反映给浏览器 下载的要求 两个头一个流! Content-Type:传递给客户端的文件是什么MIME类型,例如:image/pjpeg 通过文件名称调用ServletContext的getMimeType()方法,得到MIME类型! Content-...

Distance的博客 482

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

文件的上传与下载

1.文件的上传介绍(*****重点*****) 步骤一:要有一个 form 标签,method=post 请求 步骤二:form 标签的 encType 属性值必须为 multipart/form-data 值 步骤三:在 form 标签中使用 input type=file 添加上传的文件 步骤四:编写服务器代码(Servlet 程序)接收,处理上传的数据。 注释:encType=multipart/form-data 表示提交的数据,以多段(每一个表单项一个数据段)的形式进行拼

nangon1234的博客 279

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

org.springframework.web.filter.CharacterEncodingFilter .

感谢:http://blog.youkuaiyun.com/heidan2006/article/details/3075730 很简单很实用的一个过滤器,当前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题,那这个类就可以出场了。         从名字就可以看出来它是个过滤器了,所以就要想配置普通过滤器那样配置到we

marila4720的专栏 816

org.springframework.web.filter.CharacterEncodingFilter

感谢:http://blog.youkuaiyun.com/heidan2006/article/details/3075730 很简单很实用的一个过滤器,当前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题,那这个类就可以出场了。         从名字就可以看出来它是个过滤器了,所以就要想配置普通过滤器那样配置到we

liuzhen917的专栏 925

java 下载文件中文名乱码

【代码】java 下载文件中文名乱码。

不积跬步,无以至千里 365

Request && Response

1、补充:ClassLoader.getResource():URL getPath() ClassLoader c = ServletDemo.class.getClassLoader(); URL url = c.getResource(); String path = url.getPath(); path中不要带中文或者空格 因为URL编码会将中文或者空格转为别的字符 ...

java开发指南博客 【转载】 178

Java 文件下载 中文名称乱码

我整理的一些关于【java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnNJava 文件下载中的中文名称乱码问题及解决方案 在现代 web 开发中,文件下载是一个常见的功能。然而,在处理中文文件名时,我们常常会遭遇乱码问题。这是因为 HTTP 协议和浏览器对文件...

weixin_41488485的博客 263

Java Web文件下载2——文件下载乱码处理

这是我在导出excel文件供用户下载时遇到的: 流程: 1、文件生成,文件全名名由路径加文件名构成,路径配置在数据库中动态读取,名称由时间加汉字构成。生成 的文件将存放在数据库中配置的路径中 2、前台页面显示出文件列表,点击下载,将文件名传到后台去,后台通过读取数据库配置的路径加上传过来的 文件名去寻找该文件 3、从指定文件中读取数据,设置相关信息,完成下载   中文乱码处理: 1、生成文件系

sheen口开河 1761

web端下载文件,中文名称乱码处理

java web下载文件时,对于文件名称(中文或者特殊字符)由于各个浏览器的差异,会造成乱码现象,此时可如下处理: 1、前端js: fileName = encodeURIComponent(fileName); var reg = new RegExp("’",“g”);//g,表示全部替换。 fileName = fileName.replace(reg,"%27"); 2、后端java: S...

dadafei007的博客 1806

java web 文件下载中文名乱码问题解决

设置header的Content-Disposition时,要用编码后的文件名。 方式一:urlFileNameString = new String(filenameString.getBytes(),"ISO-8859-1"); 方式二:urlFileNameString = URLEncoder.encode(filenameString,"UTF-8"); 在读取服务器文件时还是使用从request中直接读取的文件名filenameString。 完整代码如下: @WebServlet(

u010156872的博客 1028

关于java文件【下载中文文件名乱码】问题解决方案

前面一篇文章讲了:基于MAVEN项目——如何上传于下载文件 现在遇见一个问题:上传中文命名的图片,下载显示不了中文名称: 解决效果: 解决步骤: 第一步: sping-mvc.xml部分代码: <!-- 上传文件的处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart...

cungudafa的博客 2万+

java下载文件名_java web应用文件下载(包括中文文件名乱码处理)

Java web下载文件功能的确很简单。如下代码片段String fileName ="....";response.setHeader("Content-disposition","attachment; filename="+fileName);//response.setContentType("application/ms-word");BufferedInputStream bis = ...

weixin_34681072的博客 1199
上一篇: springboot+mybatis集成+分页插件使用
下一篇: 工作感悟
coderlyf
博客等级 码龄10年 25粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值