用struts2写的文件下载迅雷显示的文件后缀名是action???!!!
使用struts2写了一个文件下在的Action结果下点击文件下载的时候,迅雷弹出的下载框中显示的文件名为那个处理下载的Action,而用IE下载的时候文件名显示是正常的。
请问这是什么原因,有什么办法可以解决?
------解决方案--------------------你需要处理下乱码问题
------解决方案--------------------继续下载,不能正确解析文件吗?
------解决方案--------------------没,好比我现在下载的文件名是demo.doc但是我点击下载按钮时,那下载的文件名称变成了我的action的方法名称。xxx.action这样的文件名称,我用IE可以正常下载文件,名称也是正确的。如果谁知道,希望给我一个解决的思路,我现在很急。
------解决方案--------------------
下载下来后就是文件名称了,主要下载action的配置文件中的attachment; filename这个2个有关
attachment用了这个配置就会触发下载工具,不要就可以了
filename是下载文件的名称也可以配置的
------解决方案--------------------我的这个错误就是在讯雷那文件名称那显示不正确,我下载下来的文件都是正确名称,而且可以打开。
------解决方案--------------------这是我那action里面的方法
/**
* 下载附件方法
*/
public String upLoadDow(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
InputStream in = null;
OutputStream os = null;
try{
String path = request.getParameter("path");
System.out.println(path);
path = new String(path.getBytes("iso-8859-1"),"UTF-8");
File file = new File(path);
try{
in = new FileInputStream(file);
os = response.getOutputStream();
}catch(
FileNotFoundException ex){
ex.printStackTrace();
}
response.setContentType("application/octet-stream; charset=UTF-8");
response.addHeader("Content-Disposition", "attachment; filename=" + new String(path.split("//")[1].getBytes("gb2312"),"ISO-8859-1"));
int data = 0;
while((data = in.read()) != -1){
os.write(data);
}
}catch(Exception ex){
// ex.printStackTrace();
}finally{
try {
os.close();
in.close();
} catch (
IOException e) {
// TODO Auto-generated catch block
System.out.println("bbbbbb----------------");
e.printStackTrace();
}
}
return null;
}
------解决方案--------------------你试着可以在程序里给你下文件命名,没试过,,不知道可不可以
------解决方案--------------------你试着可以在程序里给你下文件命名,没试过,,不知道可不可以
------解决方案--------------------其他大网站都是这样的啊,去新浪ishare下载首歌,迅雷下载显示是.php啊,不是.mp3
------解决方案--------------------为了积分
------解决方案--------------------真的不能解决吗?
------解决方案--------------------