我写了一个jsp的文件下载页面,目的就是当单击超链接的时候弹出下载框之后下载到客户端,但是下载回去的东西全都坏掉了,根本打不开,代码如下:
文件名download.jsp
<%
List<File_CS> files = (List<File_CS>)application.getAttribute("front_files");
//application中缓存的文件信息 %>
<%
String indexStr = request.getParameter("index");
if(indexStr != null){
int index = Integer.parseInt(indexStr);
String filePath = application.getRealPath("/");
String fileName=files.get(index).getLocation();
//文件是放在tomcat的某个应用下的,文件的Location属性记录的是具体的带路径文件名,
带路径的文件名文件名是改过的取得是当前系统的毫秒数。文件另有属性标示文件的中文名字
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
java.io.FileInputStream fis = new java.io.FileInputStream(filePath + fileName);
int b ;
while((b = fis.read()) != -1){
out.write(b);
}
fis.close();
out.close();
}
%>
下面是文件做展现时的代码:
<a href="/frontPages/download.jsp?index=<%=i %>"><%=file.getName() %></a> 说明一下:意思就是文件展现出来,当点击某个超链接时提交到本页面,并把该超链接对应的文件在ArrayList中的下标号一并的传过去,之后再根据下标找到具体文件 。还有一个问题就是,我想让客户端弹出来的下载对话框默认显示的名字是文件的中文名字,而不是我改过的哪个带路径的文件名的名字
文件名download.jsp
<%
List<File_CS> files = (List<File_CS>)application.getAttribute("front_files");
//application中缓存的文件信息 %>
<%
String indexStr = request.getParameter("index");
if(indexStr != null){
int index = Integer.parseInt(indexStr);
String filePath = application.getRealPath("/");
String fileName=files.get(index).getLocation();
//文件是放在tomcat的某个应用下的,文件的Location属性记录的是具体的带路径文件名,
带路径的文件名文件名是改过的取得是当前系统的毫秒数。文件另有属性标示文件的中文名字
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
java.io.FileInputStream fis = new java.io.FileInputStream(filePath + fileName);
int b ;
while((b = fis.read()) != -1){
out.write(b);
}
fis.close();
out.close();
}
%>
下面是文件做展现时的代码:
<a href="/frontPages/download.jsp?index=<%=i %>"><%=file.getName() %></a> 说明一下:意思就是文件展现出来,当点击某个超链接时提交到本页面,并把该超链接对应的文件在ArrayList中的下标号一并的传过去,之后再根据下标找到具体文件 。还有一个问题就是,我想让客户端弹出来的下载对话框默认显示的名字是文件的中文名字,而不是我改过的哪个带路径的文件名的名字
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货