`

java 实现下载文件 支持safari,ff,ie等

    博客分类:
  • ssh2
阅读更多

 点击执行的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浏览器

0
1
分享到:
评论

相关推荐

    JAVA_jsp任意浏览器的图片上传预览

    不同的浏览器,如Internet Explorer(IE)、Firefox、Safari、Opera和Chrome,由于其渲染引擎和API支持的差异,对本地文件操作的支持各不相同。例如,IE6、IE7、IE8、IE9以及Firefox的不同版本之间就存在显著的区别...

    mojolicious-stream-upload:mojolicious 实现的 stream 大文件上传的后端服务

    兼容性好IE7+, FF3.6+, Chrome*,Safari4+,遨游等主流浏览器 选择文件的按钮完全可以自定义 进度条、速度、剩余时间等附属信息 基本的自定义属性及函数,如文件多选、上传成功的响应函数等 示例代码java实现...

    interviewee-web&java

    ### 盒子模型 在网页布局中,每个元素都被看作是一个矩形...以上总结了“interviewee-web&java”文件中提到的知识点,涵盖了CSS、HTML、JavaScript等多个方面,希望能帮助您更好地理解和掌握这些重要的Web开发概念。

    编辑器 KindEditor 4.0.4

    兼容:支持大部分主流浏览器,比如 IE、Firefox、Safari、Chrome、Opera ver 4.0.4 (2011-12-11) 新增: 阿拉伯语语言包。 改善: 上传文件时显示上传中提示。 改善: JSON解析失败时,通过弹出层显示服务器返回...

    jquery50个实例下载

     它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。  jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...

    textarea 在IE和FF下换行无法正常显示的解决方法

    然而,由于浏览器之间的兼容性问题,特别是在Internet Explorer(IE)和Firefox(FF)之间,`...在实际项目中,除了考虑IE和Firefox,还应考虑到其他浏览器,如Chrome、Safari等,确保解决方案具有广泛的兼容性。

    jquery-1.2.3.rar

    它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...

    jquery v1.9.1 免费版

    它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX...

    Selenium:selenium自动化的学习随笔

    支持跨浏览器的自动化测试【ie、ff、chrome、safari、opera、phantonjs、htmlunit、android、iphone、ipad、winddows phone、BlackBerry】 支持跨操作系统的自动化测试【windows、linux、MAC】 支持多中编程语言编写...

    LAMP兄弟连视频PPT

    - **LAMP**与.NET、Java EE等其他开发平台相比,在成本、灵活性、社区支持等方面具有明显优势。 #### 十、总结 通过以上知识点的学习,我们不仅了解了LAMP兄弟连视频PPT中涉及的核心概念和技术细节,还掌握了构建...

    python编程使用selenium模拟登陆淘宝实例代码

    selenium简介 selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为... * 支持多平台:windows、linux、MAC ,支持多浏览器:ie、ff、safari、opera、chrome * 支持分布式测试用例

    15天学会jquery

    它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。  jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...

    什么是jquery --十分优秀的Javascrīpt框架

    它以其高效的性能、轻量级的体积(压缩后仅21K)和良好的浏览器兼容性(支持 IE6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+)著称。jQuery 的核心理念是“WRITE LESS, DO MORE”,意味着开发者可以用更少的代码实现更多...

    jquery简介

    它具有轻量级的特性,压缩后的库文件只有大约 21KB,同时它支持多种浏览器,包括 IE 6.0+、FF 1.5+、Safari 2.0+ 和 Opera 9.0+。 jQuery 的核心功能包括: 1. **选择器**:jQuery 使用类似于 CSS 的选择器语法,...

    jquery框架的js库

    它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...

    JQUERY 1.3.2

     它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。  jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...

    GoodProject Maven Webapp.zip

    jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。 系统主要运用在:在系统中一些分页或者样式交互事件处理中使用到了(比如地址选择框) 前端用到了ajax AJAX即"Asynchronous Javascript...

    JQuery In Action

     它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。  jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...

    javascript之bind使用介绍

    为了搞清这个陌生又熟悉的bind,google一下,发现javascript1.8.5版本中原生实现了此方法,目前IE9+,ff4+,chrome7+支持此方法,opera和safari不支持(MDN上的说明)。 bind的作用和apply,call类似都是改变函数的...

    jQuery-1.3.js已压缩

     它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。  jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理...

Global site tag (gtag.js) - Google Analytics