导航:首页 > 编程语言 > jsfoutputlink

jsfoutputlink

发布时间:2025-07-15 07:08:05

jsF 文件下载不提示文件对话框

在jsf配置文件里面指定呈现视图地页面,并在页面上设置响应头信息

㈡ jsf 为什么excel文件下载后变成zip格式,最好有代码,谢谢

不会吧?我做的下载页面虽然不是纯JSF的,传递参数是用的JSF,而且解决了中文乱码问题,包括文件名,文件内容。希望对你有帮助。
下载请求页面传递过来的参数:
<rich:column>
<h:outputLink value="file.jsp" rendered="true">
<f:param name="docId" value="#{item.id.docId}" / <f:param name="revNo" value="#{item.id.revNo}" />
<f:param name="attachmentNo" value="#{item.id.attachmentNo}" />
<f:param name="filename" value="#{item.fileName}" />
<f:param name="storageName" value="#{item.storageName}" />
<h:outputText value="#{item.fileName}" />
</h:outputLink>
</rich:column>
执行请求的file.jsp 下载页面

<%@page language="java" contentType="application/octet-stream" pageEncoding="utf-8"%>
<%@page import="java.io.*,java.util.*,java.net.URLEncoder"%>
<%response.reset();
String ATTACHMENTSTOREPATH = File.separator + "local"
+ File.separator + "uploads" + File.separator + "wf"
+ File.separator + "cpi";//此处以CPI为例
int docId = 0;
int revNo = -1;
int attachmentNo = 0;
String filename = null;
String storageName = null;

try {
docId = Integer.parseInt(request.getParameter("docId"));
revNo = Integer.parseInt(request.getParameter("revNo"));
attachmentNo = Integer.parseInt(request.getParameter("attachmentNo"));
//在火狐浏览器下载,含空格的文件名会出现异常,于是将空格用下划线代替
filename = (new String(request.getParameter("filename").
getBytes("ISO-8859-1"),"UTF-8")).replace(" ", "_");

//将空格转化为下划线后重新对文件名进行UTF-8编码
filename = java.net.URLEncoder.encode(filename, "UTF-8"); storageName = request.getParameter("storageName");
} catch (NumberFormatException nfe) {

}
if (docId >= 0 && revNo > -1 && attachmentNo >= 0) {
String filePath = null;
filePath = ATTACHMENTSTOREPATH + File.separator + storageName;
response.setContentType("application/octet-stream");
//因为浏览器会将字符GBK编码,所以从数据库获得的UTF-8需要转换成GBK
//UTF-8一个汉字24位,GBK一个汉字16位
//Start UTF-8 to GBK(相对以前的程序主要就是修改了这里)
String str=filename;
StringBuffer sb = new StringBuffer();
for(int i=0; i<str.length(); i++) {
char c = str.charAt(i);
switch (c) {
case '+':
sb.append(' ');
break;
case '%':
try {
sb.append((char)Integer.parseInt(
str.substring(i+1,i+3),16));
}
catch (NumberFormatException e) {
throw new IllegalArgumentException();
}
i += 2;
break;
default:
sb.append(c);
break;
}
}
String result = sb.toString();
result= new String(result.getBytes("ISO-8859-1"),"UTF-8");
response.addHeader("Content-Disposition", "attachment; filename=" + new String(result.getBytes("GBK"),"ISO-8859-1"));
//End UTF-8 to GBK
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try {
bos = new BufferedOutputStream(response.getOutputStream());
bis = new BufferedInputStream(new FileInputStream(filePath));
byte[] buffer = new byte[1024];
int n = -1;
while ((n = bis.read(buffer)) > -1) {
bos.write(buffer, 0, n);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
bis = null;
bos = null;
}
}
%>

阅读全文

与jsfoutputlink相关的资料

热点内容
安卓手游平台哪个好 浏览:849
winform操作数据库 浏览:786
录屏后文件如何存储到手机 浏览:840
win10打开的swf文件夹 浏览:903
删除复制到桌面个人文件 浏览:894
幸运数据提现不了怎么办 浏览:25
网络用语被摇是什么意思 浏览:372
英雄连游戏目录是哪个文件 浏览:922
excel无法打开文件无法显示 浏览:761
亚航最新版app 浏览:498
网络硬盘升级补丁 浏览:378
网盘的压缩文件怎样查看 浏览:204
如何删除mac系统文件夹在哪 浏览:122
网络项目设备漏配会造成什么后果 浏览:707
发表论文哪个网站好 浏览:102
编程玩具课是什么 浏览:426
网络盒子信号线怎么焊接 浏览:65
cdr透视工具 浏览:125
u盘来回弄里面的文件 浏览:247
如何将编程写进芯片 浏览:184

友情链接