`
流浪鱼
  • 浏览: 1692751 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2下载word,excel等文件后缀名成了xml

    博客分类:
  • java
 
阅读更多

在下载2007版的word,excel等文件时,下载下来的时候总是xml,如果用word或者excel打开的时候确实还是原来的内容,但这让用户体验完全不行。

经过我的测试,确认是我们在生成流时指定的返回类型标签不对造成的,只要指定了正确的返回类型就没问题了

代码如下:

根据扩展名指定返回的类型

/**
	 * 根据拓展名取的类型
	 * @param extension
	 * @return String
	 */
	public static String getContentValue(String extension ){
		if(extension.equalsIgnoreCase("dotx")){
			return dotx ;
		}else if(extension.equalsIgnoreCase("docx")){
			return docx ;
		}else if(extension.equalsIgnoreCase("xlsx")){
			return xlsx ;
		}else if(extension.equalsIgnoreCase("pptx")){
			return pptx ;
		}else{
			return "application/octet-stream;charset=ISO8859-1";
		}
		
	}

返回struts2的标签

@Results( { @Result(name = "success", location = "attachment-file.jsp"),
	@Result(name = "download", type = "stream", params = { "contentType","${contentType}", 
			  "inputName", "inputStream",
			  "contentDisposition","filename=${downAttachmentName}",
				"bufferSize","4096" ,
				"inputPath", "${downAttachmentUrl}"			
	})
})

 下载的代码

/**
	 * 附件下载
	 * @return String
	 */
	public String downloadAttachment() throws Exception {
		try {
			String id = Struts2Utils.getRequest().getParameter("sid");
			if(StrUtil.isEmptyWithTrim(id)){
				return showError("参数传递错误!");
			}
			
			AttachmentStore ps;
			try {
				ps = attachmentStoreManager.getAttachment(id);
				downAttachmentName = ps.getAttachmentName()+"."+ps.getAttachmentType();
				logger.info("下载extension-------"+ps.getAttachmentType());
				String contentType = Constant.getContentValue(ps.getAttachmentType());
				logger.info("下载contentType-------"+contentType);
				setContentType(contentType);
				//downAttachmentName = new String(downAttachmentName.getBytes(), "iso8859-1");
				//downAttachmentName = new String(downAttachmentName.getBytes(), "ISO8859-1");
				downAttachmentName = java.net.URLEncoder.encode(downAttachmentName, "UTF-8"); //linux下解决乱码
				downAttachmentUrl = ps.getAbsolutePath()+ps.getSid()+"."+ps.getAttachmentType();
			} catch (AttachmentStoreException e) {
				logger.error("附件查询失败,附件已经不存在或被删除"+e);
				ps = null;
			}
			if(ps == null){
				return showError("附件已经不存在或被删除!");
			}
			
		} catch (Exception e) {
			throw new Exception("");
		}
	
		return "download";
	}


/**
	 * 打开附件下载流
	 * @return InputStream
	 */
	public InputStream getInputStream() throws Exception {
		InputStream input1 = null;
		try {
			logger.info("getInputStream--");
			input1 = new FileInputStream(downAttachmentUrl);
		} catch (Exception e) {
			throw new Exception("");
		}
		return input1;
	}
 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Struts2文件流方式导出下载excel、Txt、image图片

    通过上述步骤,我们就可以在Struts2框架下实现文件流方式的下载功能,无论是Excel、TXT还是图片,都能有效地直接返回给浏览器,让客户端进行下载。这种方式既节省了服务器资源,也提高了用户体验。在实际项目中,...

    struts2+poi实现导出Excel文件

    在 Struts2 的配置文件 `struts.xml` 中,定义一个名为 "exportExcel" 的 action,指向这个 Action 类,并配置相应的结果。 3. **配置结果类型**:在 `struts.xml` 中,`result` 元素的 `type` 属性应设置为 ...

    Struts2中Struts.xml配置文件详解

    "Struts2 中 Struts.xml 配置文件详解" Struts2 中的 Struts.xml 配置文件是 Struts2 框架的核心配置文件,用于定义应用程序的行为和结构。在 Struts.xml 文件中,我们可以定义 package、action、interceptor、...

    struts2中利用poi导出excel

    为了将生成的Excel文件发送给用户下载,我们需要在Struts2的配置文件(struts.xml)中定义一个Result类型,例如`stream`,然后在Action类中设置响应头信息,并将工作簿写入到OutputStream中。 ```xml ...

    struts2实现excel导出

    配置Struts2的配置文件(`struts.xml`),使`ExcelDownloadAction`与特定的URL映射关联,并确保Action返回一个表示文件下载的Result类型,如`stream`。 在客户端,用户可以通过点击一个链接或按钮触发这个Action,...

    Struts框架中struts-config.xml文件配置小结

    ### Struts框架中struts-config.xml文件配置详解 #### 一、引言 在Java Web开发领域,Struts是一个非常重要的MVC(Model-View-Controller)框架,它极大地简化了Web应用程序的开发过程。而在Struts框架中,`struts...

    struts2如何生成XML文件

    ### Struts2生成XML文件详解 #### 一、引言 在Web开发中,XML(可扩展标记语言)是一种常用的数据交换格式。Struts2框架作为Java Web开发中的一种流行框架,提供了丰富的功能来处理XML数据。本文将详细介绍如何...

    JSP Struts2 分页 导出Excel

    - `struts.xml`:Struts2配置文件,定义Action和结果类型。 - `Action类`:处理业务逻辑,如查询数据、分页、导出Excel。 - `JSP页面`:显示查询结果和分页控件,使用jQuery与服务器通信。 - `DAO(数据访问对象...

    struts2生成Excel文件上传下载

    项目:Struts2UpAndDownLoadFile 1.实现文件的上传和下载 项目:Struts2HandleExcelFile 1.实现文件的上传和下载 2.利用apache的poi-3.5-FINAL-20090928.jar组件实现创建Excel表格。

    整合struts2 ssh导出excel

    4. **Struts2 Action结果处理**:配置Struts2 Action的结果类型为“stream”,设置contentDisposition属性为“attachment”以触发文件下载对话框,并指定文件名为“export.xls”。 5. **整合SSH**:在SSH框架下,...

    struts2 poi导出到excel

    Struts2是一个基于MVC设计模式的Java EE框架,它提供了强大的动作控制、拦截器和结果类型等功能,使得Web应用的开发更加简洁高效。而Apache POI是一个开源库,专门用于读写Microsoft Office格式的文件,包括Excel。 ...

    struts2 jquery xml

    在Struts2中,XML配置文件用于定义Action、结果类型、拦截器栈等。例如,`struts.xml`文件通常用于配置Struts2的核心设置。XML配置文件的好处是清晰、可读性强,但也可能导致配置文件过于庞大,不易维护。 **整合...

    Struts实时生成Excel文件下载

    Struts实时生成Excel文件下载

    Struts文件上传和Excel导出

    2. **Action配置**:在Struts2的配置文件(struts.xml)中,需要定义一个Action,指定文件上传的处理方法,并配置允许的文件类型和大小限制。 3. **Action实现**:在Action类中,创建一个`File`对象和一个`String`...

    struts2文件上传下载

    在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...

    struts2+poi实现excel文件的导出

    Struts2 和 Apache POI 的整合允许开发者轻松地实现在 Web 应用程序中导出 Excel 文件的功能。Apache POI 是一个 Java 库,它提供了处理 Microsoft Office 格式(如 .xls 和 .xlsx)的能力,包括创建、读取和修改 ...

    struts2框架下的文件上传

    Struts2框架是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它提供了丰富的功能,包括处理表单提交、文件上传等。在Struts2中,文件上传是一个常见的需求,可以帮助用户从客户端上传文件到服务器。...

    struts2实现文件下载实例源代码

    在Struts2中实现文件下载的功能,可以帮助用户从服务器获取并保存文件到本地计算机,例如这里的"1.xls"文件。下面我们将深入探讨如何在Struts2框架下实现文件下载的实例。 首先,我们需要在项目的Web应用目录结构中...

    struts2 Excel导入数据库

    总结,这个项目展示了如何结合Struts2的MVC架构、Apache POI的Excel处理能力和JDBC的数据库操作,实现从Excel文件批量导入数据到SQL Server 2000数据库的功能。这个过程涉及文件上传、数据读取、数据库交互等多个...

    struts2的struts.xml文件的元素结构

    在Struts2中,`struts.xml`文件是核心配置文件,用于定义应用的行为、动作映射、结果类型、拦截器等。这篇博文主要探讨了`struts.xml`文件的元素结构,下面我们将详细解析这些关键元素。 首先,`struts.xml`文件...

Global site tag (gtag.js) - Google Analytics