点击执行的action
public String docattach (){
String jssessionid=CookieMgr.readCookies(this.getRequest(),"jsessionid");
String strAttchId = this.getRequest().getParameter("attachid");
HashMap map = new HashMap();
InputStream inputStream=null;
try {
inputStream = docuInfoManager.getattachment(Long.parseLong(strAttchId),map);
if (inputStream != null) {
inputStreamMap.put(strAttchId+jssessionid,inputStream);
DocAttachmentInfo docattachmentInfo = (DocAttachmentInfo) map
.get("docattachmentInfo");
if (docattachmentInfo.getAttchMimetype().equalsIgnoreCase(""))
if (docattachmentInfo.getAttchFileext()
.equalsIgnoreCase(".jpg"))
setContentType("image/jpg");
else if (".pdf".equals(docattachmentInfo.getAttchFileext()))
setContentType("application/pdf");
else if (".doc".equals(docattachmentInfo.getAttchFileext()))
setContentType("application/msword");
else if (".xls".equals(docattachmentInfo.getAttchFileext()))
setContentType("application/vnd.ms-excel");
else if (".rar".equals(docattachmentInfo.getAttchFileext()))
setContentType("application/x-zip-compressed");
else
setContentType(docattachmentInfo.getAttchMimetype());// 不同类型的文件对应不同的MIME类型
// 文件名
String fName = docattachmentInfo.getAttchFilename();
fName = new String(fName.getBytes("UTF-8"),"iso-8859-1");
setDownloadFileName(fName);
return "docattach";
} else {
this.getRequest().setAttribute("message", "附件不存在!");
return this.ERROR;
}
} catch (Exception e) {
e.printStackTrace();
this.getRequest().setAttribute("message", "系统出现异常!");
return this.ERROR;
}
}
点击下载保存后的流
public InputStream getInputStreamAttachment() {
InputStream inputStream=null;
String jssessionid=CookieMgr.readCookies(this.getRequest(),"jsessionid");
if(null!=jssessionid){
String strAttchId = this.getRequest().getParameter("attachid");
if(inputStreamMap.get("attchId")!=null) {
strAttchId = inputStreamMap.get("attchId").toString();
inputStreamMap.remove("attchId");
}
inputStream = (InputStream) inputStreamMap.get(strAttchId + jssessionid);
inputStreamMap.remove(strAttchId+ jssessionid );
}
return inputStream;
}
struts.xml配置文件
<action name="emobileservices" class="emobileSearchAction" >
<result name="ajaxpage">/apps/fulltextsearch/search/emobile/EmobileSearch.jsp</result>
<result name="success">/apps/fulltextsearch/search/emobile/EmobileSearchIndex.jsp</result>
<result name="docattach" type="stream">
<param name="contentType">${contentType}</param>
<param name="inputName">inputStreamAttachment</param>
<param name="bufferSize">4096</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
</result>
<result name="docDetail">/apps/fulltextsearch/search/emobile/emobileDocDetail.jsp</result>
<result name="error">/common/emobileErrMsg.jsp</result>
</action>
注意:此配置将会支持safari浏览器
分享到:
相关推荐
不同的浏览器,如Internet Explorer(IE)、Firefox、Safari、Opera和Chrome,由于其渲染引擎和API支持的差异,对本地文件操作的支持各不相同。例如,IE6、IE7、IE8、IE9以及Firefox的不同版本之间就存在显著的区别...
兼容性好IE7+, FF3.6+, Chrome*,Safari4+,遨游等主流浏览器 选择文件的按钮完全可以自定义 进度条、速度、剩余时间等附属信息 基本的自定义属性及函数,如文件多选、上传成功的响应函数等 示例代码java实现...
### 盒子模型 在网页布局中,每个元素都被看作是一个矩形...以上总结了“interviewee-web&java”文件中提到的知识点,涵盖了CSS、HTML、JavaScript等多个方面,希望能帮助您更好地理解和掌握这些重要的Web开发概念。
兼容:支持大部分主流浏览器,比如 IE、Firefox、Safari、Chrome、Opera ver 4.0.4 (2011-12-11) 新增: 阿拉伯语语言包。 改善: 上传文件时显示上传中提示。 改善: JSON解析失败时,通过弹出层显示服务器返回...
它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...
然而,由于浏览器之间的兼容性问题,特别是在Internet Explorer(IE)和Firefox(FF)之间,`...在实际项目中,除了考虑IE和Firefox,还应考虑到其他浏览器,如Chrome、Safari等,确保解决方案具有广泛的兼容性。
它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...
它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX...
支持跨浏览器的自动化测试【ie、ff、chrome、safari、opera、phantonjs、htmlunit、android、iphone、ipad、winddows phone、BlackBerry】 支持跨操作系统的自动化测试【windows、linux、MAC】 支持多中编程语言编写...
- **LAMP**与.NET、Java EE等其他开发平台相比,在成本、灵活性、社区支持等方面具有明显优势。 #### 十、总结 通过以上知识点的学习,我们不仅了解了LAMP兄弟连视频PPT中涉及的核心概念和技术细节,还掌握了构建...
selenium简介 selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为... * 支持多平台:windows、linux、MAC ,支持多浏览器:ie、ff、safari、opera、chrome * 支持分布式测试用例
它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...
它以其高效的性能、轻量级的体积(压缩后仅21K)和良好的浏览器兼容性(支持 IE6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+)著称。jQuery 的核心理念是“WRITE LESS, DO MORE”,意味着开发者可以用更少的代码实现更多...
它具有轻量级的特性,压缩后的库文件只有大约 21KB,同时它支持多种浏览器,包括 IE 6.0+、FF 1.5+、Safari 2.0+ 和 Opera 9.0+。 jQuery 的核心功能包括: 1. **选择器**:jQuery 使用类似于 CSS 的选择器语法,...
它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...
它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...
jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。 系统主要运用在:在系统中一些分页或者样式交互事件处理中使用到了(比如地址选择框) 前端用到了ajax AJAX即"Asynchronous Javascript...
它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...
为了搞清这个陌生又熟悉的bind,google一下,发现javascript1.8.5版本中原生实现了此方法,目前IE9+,ff4+,chrome7+支持此方法,opera和safari不支持(MDN上的说明)。 bind的作用和apply,call类似都是改变函数的...
它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...