java实现下载文件,如果文件名为中文,下载后内容为空,求解释!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现下载文件,如果文件名为中文,下载后内容为空,求解释!相关的知识,希望对你有一定的参考价值。

BufferedInputStream bis=null;
BufferedOutputStream bos=null;
HttpURLConnection conn=null;
path=path.replaceAll("%20", " ");
try
URL url=new URL(path);
conn=(HttpURLConnection) url.openConnection();
conn.setConnectTimeout(6000); //设置连接超时时间6s
conn.connect();

//response.reset();
response.setContentType("application/x-msdownload;");
response.addHeader("Content-Disposition","attachment;filename=\""+new String(fileName.getBytes("gb2312"),"iso8859-1")+"\"");
response.setContentType("application/octet-stream");
bis=new BufferedInputStream(conn.getInputStream());
byte[] buffer = new byte[bis.available()];
int len;
bos = new BufferedOutputStream(response.getOutputStream());//new FileOutputStream(fileName);
while((len = bis.read(buffer))!=-1)
bos.write(buffer,0,len);

bos.flush();
catch (MalformedURLException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
finally //关闭各类流

if(conn!=null)
conn.disconnect();

if(bis!=null)
try
bis.close();
catch (IOException e)
e.printStackTrace();


if(bos!=null)
try
bos.close();
catch (IOException e)
e.printStackTrace();






当下载中文文件名的文件时,程序报错,如图,所示为出错的地方。

你的path变量的值是怎么来的。如果只是中文名有问题,可以尝试用URLDecoder.decode来对文件名进行URL编码转换。你debug跟踪下在URL url=new URL(path);这句时,你的path是什么值,他是否可以访问。 参考技术A 参考技术B 这个好像不是大问题。

Java实现多文件生成压缩包下载

我是傲骄鹿先生,沉淀、学习、分享、成长。

如果你觉得文章内容还可以的话,希望不吝您的「一键三连」,文章里面有不足的地方希望各位在评论区补充疑惑、见解以及面试中遇到的奇葩问法

最近项目中遇到多文件下载问题,为了实现功能也是花费了点儿时间,话不多说,直接上内容。如图所示,实际的需求如下:将选中的列表的文件进行下载

前端代码如下:

传递到后台是参数如下,然后进行参数处理:

后台代码如下:

 最终实现的下载的文件为:download.zip。

系列文章持续更新,微信搜一搜「傲骄鹿先生 」,回复【面试】有准备的一线大厂面试资料。

以上是关于java实现下载文件,如果文件名为中文,下载后内容为空,求解释!的主要内容,如果未能解决你的问题,请参考以下文章

Java实现FastDFS文件上传下载和删除

Java Web实现使用浏览器从服务器下载文件(后台)

高分:用java实现服务器上多个文件先打包,然后下载,下载完成后删除包!

java实现在线浏览PDF文档功能

jsp下载excel文件

java FTP下载文件在代码中如何实现知道下载完成?