首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

tomcat6转jboss5发布ssh工程上载文件报错

2014-07-21 
tomcat6转jboss5发布ssh工程下载文件报错下载此图片struts.xml中----------------------

tomcat6转jboss5发布ssh工程下载文件报错
下载此图片</a>
struts.xml中
----------------------
<!-- 文件下载,支持中文附件名 -->
?? <action name="fileDownload"
??? type="stream">
???? <!-- 动态文件下载的,事先并不知道未来的文件类型,那么我们可以把它的值设置成为:application/octet-stream;charset=ISO8859-1 ,注意一定要加入charset,否则某些时候会导致下载的文件出错; -->
???? <param name="contentType">
?????application/octet-stream;charset=ISO8859-1
???? </param>
???? <param name="contentDisposition">
????? attachment;filename="${downloadFileName}"
???? </param>
???? <!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性
????? 对应action类中的方法 getDownloadFileName() 其中特殊的代码就是${downloadFileName},它的效果相当于运行的时候将action对象的属性的取值动态的填充在${}中间的部分,我们可以认为它等价于+action. getDownloadFileName()。 -->
???? <param name="inputName">inputStream</param>
???? <param name="bufferSize">4096</param>
??? </result>
?? </action>
----------------------
action中
----------------------
private String fileName;// 初始的通过param指定的文件名属性 set get

/** 文件名 转换编码 防止中文乱码*/
public String getDownloadFileName() {
?? String fileName=ServletActionContext.getRequest().getParameter("fileName");
?? String downFileName = fileName;
?? try {
??? downFileName = new String(downFileName.getBytes(), "ISO8859-1");
?? } catch (Exception e) {
??? e.printStackTrace();
?? }
?? return downFileName;
}
//下载的流
public InputStream getInputStream() {
?? String name=this.getDownloadFileName();
//??String realPath=ServletActionContext.getServletContext().getRealPath("/uploadImages")+ "/"+name; 路径错误
?? String realPath="/uploadImages/"+name;
?? InputStream in=ServletActionContext.getServletContext().getResourceAsStream(realPath);
?? if(null==in){
??? System.out.println("Can not find a java.io.InputStream with the name [inputStream] in the invocation stack. Check the <param name="inputName"> tag specified for this action.检查action中文件下载路径是否正确.");??
?? }
?? return ServletActionContext.getServletContext().getResourceAsStream(realPath);
}

@Override
public String execute() throws Exception {
?? return SUCCESS;
}

热点排行