如何将服务器的文件下载到本地

本文介绍了如何在Java中处理服务器文件下载时遇到的中文文件名乱码问题。通过修改`ContentDisposition`头部并使用URL编码解决在不同浏览器上的乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么情况下会要文件下载
浏览器不能够直接解析的文件
2.什么情况下需要在服务器端编写文件下载的代码?
一般情况下,浏览器不能解析的代码需要编写文件下载的代码
因为浏览器的不同,像谷歌浏览器可以直接解析文件,ie浏览器不能直接解析文件,因此我们设置代码不让浏览器解析文件,而是下载文件。
新建一个download.html
在这里插入图片描述
再新建一个Servlet
***public class DownloadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//取页面的参数用的,当页面的表单参数通过request里面传过来,就可以通过这个方法取出来
String filename = request.getParameter(“file”);
// 要下载的文件类型 MIME response.setContentType(this.getServletContext().getMimeType(filename));
// 告诉浏览器该文件不是直接进行解析,而是以下载的方式
// 在设置进去response中之前,可以先把filaname中的字符串设置一下编码
filename = URLEncoder.encode(filename, “utf-8”); response.setHeader(“ContentDisposition”,“attachment;filename=”+filename);
// 通过名字来获取到绝对路径
String path = this.getServletContext().getRealPath("/tempfile/"+filename);
// 获取文件的输入流
System.out.println(path);
InputStream is = new FileInputStream(path);
// 获取输出流,通过response对象获取,用于向客户端写入内容
ServletOutputStream out = response.getOutputStream();

	int len = 0;
	byte[] b = new byte[1024];
	while((len=is.read(b))!=-1){

// 在读取数据的时候就把数据写出去
out.write(b, 0, len);
}
// 关流
is.close();
out.close();
}***

在写 这个代码时,出现一点问题,就是中文.txt文件名出现了乱码问题,在网上看了很多博客,看到很多就是用这个方法
filename=new String(filename.getBytes(“iso8859-1”),“utf-8”)
就是将得到的字节用utf-8显示出来,但是没什么用,在谷歌浏览器仍然报乱码
后来在网上看到下面的代码,完美的解决了我的问题
在这里插入图片描述
就是不用的浏览器针对于解决java下载文件中文文件名乱码问题的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值