迅雷下载文件显示名称问题

Coder_D 杭州中威电子股份有限公司 Java开发  2014-12-11 11:37:08
package com.servlet;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.common.BeanHelper;

@SuppressWarnings("serial")
public class DownloadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) {
doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) {
String fullPath;
String localPath = request.getParameter("path");
String basePath = BeanHelper.getConfService().getScatter().getBasePath(); //private.xml中读取文件存放路径
fullPath = basePath + localPath; //图片的全路径
String fileName = localPath.substring(localPath.lastIndexOf("/") + 1);

FileInputStream fis = null;
OutputStream toClient = null;

try {
fis = new FileInputStream(fullPath);
int i = fis.available(); // 得到文件大小
byte data[] = new byte[i];
fis.read(data); // 读数据
fis.close();
response.setContentType("multipart/form-data"); // 设置返回的文件类型
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName); // 设置文件头
response.setContentLength(i);
toClient = response.getOutputStream(); // 得到向客户端输出二进制数据的对象
toClient.write(data); // 输出数据
toClient.close();
}catch(Exception e) {
e.printStackTrace();
}finally {
//try中途发生异常后关闭所有IO流
closeAllIO(toClient, fis);
}
}

//关闭所有IO流
private void closeAllIO(OutputStream toClient,FileInputStream fis) {
try {
if(toClient != null)
toClient.close();
if(fis != null)
fis.close();
}catch(IOException e) {
//iLog.error("IO关闭失败:"+e);
}
}
}

下载文件的servlet,用浏览器直接下载没有问题,用迅雷下载存在两个问题:
1. 会抛出connect reset by peer的异常,我知道是连接断开引起的,但是具体的不是很明白
2. 迅雷下载的时候,文件能够下载成功,但是文件名称是访问的servlet名称,就是web.xml中配置的servlet路径,我设置了HTTP头的文件名称,在迅雷是不起作用的吗?
...全文
169 点赞 收藏 4
写回复
4 条回复
左家垅编程小分队 2015年01月04日
楼主 最后怎么解决的啊 我也遇到了相同的问题
回复 点赞
littlebrain4solving 2014年12月12日
引用 2 楼 u012171905 的回复:
[quote=引用 1 楼 littlebrain4solving 的回复:] 你用迅雷精简版、迅雷7都试过吗?
我用的迅雷极速版,版本也会有关系吗?[/quote] 有可能,都试试吧。
回复 点赞
Coder_D 2014年12月11日
引用 1 楼 littlebrain4solving 的回复:
你用迅雷精简版、迅雷7都试过吗?
我用的迅雷极速版,版本也会有关系吗?
回复 点赞
littlebrain4solving 2014年12月11日
你用迅雷精简版、迅雷7都试过吗?
回复 点赞
发动态
发帖子
Java EE
创建于2007-09-28

3.7w+

社区成员

22.5w+

社区内容

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区公告
暂无公告