public static final void downloadfile(HttpServletRequest request, HttpServletResponse response, String path, String fileName)
{
File downloadFile = null;
File file =new File(path);
//判断存在
if(file.exists()){
//为文件夹,下载文件夹内文件
if(file.isDirectory()){
String[] children = file.list();
if(children!=null&&children.length>0)
{
downloadFile = new File(file, children[0]);
}
}
else
{
downloadFile = file;
}
}
if (downloadFile!=null && downloadFile.exists())
{
InputStream inputStream = null;
OutputStream outputStream = null;
// 以流的形式下载文件
try
{
inputStream = new BufferedInputStream( new FileInputStream(downloadFile));
outputStream = new BufferedOutputStream(response.getOutputStream());
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
response.reset(); // 清空response
//设置response的Header
String userAgent = request.getHeader("User-Agent");
//针对IE或者以IE为内核的浏览器:
if (userAgent.contains("MSIE")||userAgent.contains("Trident"))
{
fileName = URLEncoder.encode(fileName, "UTF-8");
}
else
{
//非IE浏览器的处理:
fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
}
response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", fileName));
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setCharacterEncoding("UTF-8");
response.addHeader("Content-Length", "" + downloadFile.length());
response.setContentType("application/octet-stream");
outputStream.write(buffer);
outputStream.flush();
}
catch (IOException e)
{
logger.error("名为:"+fileName+"的文件下载出错");
}
finally
{
if(inputStream!=null){
try
{
inputStream.close();
}
catch(IOException e)
{
logger.error("输入流关闭错误");
e.printStackTrace();
}
}
if(outputStream!=null){
try
{
outputStream.close();
}
catch (IOException e)
{
logger.error("输出流关闭错误");
e.printStackTrace();
}
}
}
}
else
{
logger.error("文件不存在");
}
}
分享到:
相关推荐
java下载附件中文乱码
通过以上知识点的深入理解和应用,可以有效地解决“fckeditor(java版-解决中文附件名称乱码问题)”这个问题,确保用户能够正常上传并保存带有中文名称的附件,从而提高产品在中文环境下的可用性和用户体验。
在Java编程中,遇到“java下载时文件名乱码”的问题通常是由于编码不一致或处理不当造成的。在处理文件下载时,尤其是从Web服务器下载带有非ASCII字符的文件名时,这种问题尤为常见。让我们深入探讨这个问题,并提供...
本文将深入探讨Java文件下载的实现方式以及如何解决中文乱码问题。 首先,我们需要理解HTTP协议中的Content-Disposition头的作用,它用于告知浏览器如何处理响应体的内容,比如作为附件下载。在Java中,我们通常...
### Java导出Excel文件并下载到客户端(含解决中文乱码问题) 在现代的企业级应用开发中,数据导出功能是非常常见的一种需求。特别是在B/S架构的应用中,用户经常需要将查询结果导出为Excel文件以便进行后续的数据...
### WebLogic与Tomcat下载附件乱码问题解析 在企业级应用服务器的环境中,WebLogic与Tomcat都是非常常见的中间件平台。用户在使用这些平台进行文件下载时可能会遇到附件名称出现乱码的情况,这不仅影响用户体验,也...
这个“java简易小邮箱”项目特别强调了发送和下载附件的功能,并且解决了字符编码问题,确保了邮件内容的正确显示。 首先,我们来探讨Java邮件API(JavaMail API)。JavaMail API是Java平台上的标准API,用于处理...
JavaMail是Java编程语言中的一个开源库,用于处理电子邮件通信,包括发送、接收邮件以及管理邮件附件。在JavaMail框架的帮助下,开发者可以方便地实现SMTP(简单邮件传输协议)、POP3(邮局协议版本3)和IMAP...
ie浏览器(11)解决下载文件名 乱码 Java 工具类 util 类 下载附件的名称乱码
在IT行业中,文件压缩是一种常见的数据存储和传输方式,ZipOutputStream是Java标准库中的一个类,用于将数据流写入ZIP格式的压缩文件。本文将深入探讨如何使用ZipOutputStream进行文件压缩,并解决可能出现的乱码...
<%@ page import="java.util.*"%> String q=request.getParameter("q"); q = q == null? "没有值" : q; %> 新闻列表显示 ;charset=gb2312"> ``` TOMCAT乱码问题可以通过使用Filter设置字符集或修改server.xml...
8. 调用`addFileAffix`方法添加附件,该方法创建一个`MimeBodyPart`,设置数据处理器为`FileDataSource`,并编码附件名以防止乱码。 9. 使用`setFrom`方法设置发件人地址。 10. 使用`setTo`方法设置收件人地址。 11....
`contentDisposition`属性则决定了文件下载的方式,可以是`inline`(内联)或`attachment`(附件)。`attachment`通常会触发浏览器的文件保存对话框,让用户选择保存位置;而`inline`则会尝试在浏览器窗口中直接打开...
2. **支持中文附件名的文件下载**:在第二个`action`示例中,`download2`不仅处理文件下载,还考虑到了中文文件名的兼容性问题。通过在`contentDisposition`参数中使用`${downloadFileName}`,Struts2会调用`action`...
SpringBoot mail中文附件乱码的解决方法 邮件附件中文乱码问题 在使用 SpringBoot 发送邮件时,经常会遇到附件名称中文乱码的问题。本文将详细介绍解决此问题的方法。 问题分析 在发送邮件时,我们需要将附件...
### Java与JavaScript实现附件下载知识点详解 #### 一、Java端实现附件下载 在Web开发过程中,实现文件下载是一项常见的需求。以下将详细介绍如何利用Java和JavaScript来完成这一任务。 ##### 1. Java代码解析 ...
### Java Response 下载文件方法详解 在Web应用开发过程中,经常需要实现文件的上传与下载功能。其中,通过`java response`实现文件下载是常见需求之一。本文将深入解析如何利用Java中的`HttpServletResponse`对象...
在Java Web开发中,使用SmartUpload组件上传附件时,可能会遇到中文文件名乱码的问题。这个问题通常涉及到字符编码的处理,特别是在不同的操作系统和Web服务器环境下。以下是对彻底解决该问题的详细解析: 首先,...
java socket发送SMTP邮件,支持SSL,支持发附件,抄送且发送的邮件标题内容都无乱码!