package com.eaoa.uc.attachment.action;
import java.io.InputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.eaoa.base.EABaseAction;
import com.eaoa.query.PubAttachmentQuery;
import com.eaoa.vo.PubAttachment;
import com.stony.core.util.CoreUtils;
/**
* Find a attachment from table "EAPT_ATTACHMENT" by attachmentno, and show it on page.
* @author zhenglun.zhou
*
*/
public class AttachmentViewAction extends EABaseAction {
protected ActionForward doWork(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String attachmentnostr = request.getParameter("attachmentno");
if(StringUtils.isBlank(attachmentnostr))
return null;
Long attachmentno = CoreUtils.parseLong(attachmentnostr);
PubAttachment attachment = PubAttachmentQuery.loadByNo(attachmentno);
//扩展名和文件名
String extname = attachment.getExtendname().toLowerCase();
String filename = attachment.getAttachmentname();
//设置response
setIsStream(response);
response.reset(); //清除response的buffer
if (extname.indexOf("bmp,jpeg,gif") != -1) {
response.setContentType("image/"+extname);
} else if ("jpg".equals(extname)) {
response.setContentType("image/jpeg");
} else if ("xls".equals(extname)) {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename="+filename);
} else if ("doc".equals(extname)) {
response.setContentType("application/msword; charset=gb2312");
response.setHeader("Content-disposition", "attachment; filename="+filename);
} else if ("ppt".equals(extname)) {
response.setContentType("application/vnd.ms-powerpoint; charset=gb2312");
response.setHeader("Content-disposition", "attachment; filename="+filename);
}else{
response.setHeader("Content-disposition", "attachment; filename="+filename);
}
//输出流
InputStream ins = null;
try {
ins = attachment.getContent().getBinaryStream();
ServletOutputStream outs = response.getOutputStream();
int blobsize = (int) attachment.getContent().length();
byte[] blobbytes = new byte[blobsize];
int bytesRead = 0;
while ((bytesRead = ins.read(blobbytes)) != -1) {
outs.write(blobbytes, 0, bytesRead);
}
ins.close();
outs.flush();
outs.close();
} catch (Exception e) {
}
return null;
}
}
分享到:
相关推荐
FTP上传,删除,下载文件的工具类(可供Action/Controller层使用) FtpUtil.uploadFileFromProduction(hostname, port, username, password, pathname, filename, originfilename);
在Struts2中,实现文件下载需要在配置文件`struts.xml`中定义相应的Action和结果类型。以下是一个基本的配置示例: ```xml <action name="fileDown" class="it.com.down.FileDown"> ...
在Struts中,我们通常会创建一个Action类来处理文件下载的逻辑。这个Action类需要获取到待下载文件的路径或流,并设置适当的HTTP响应头,包括Content-Disposition(用于指定文件名)和Content-Type(用于标识文件...
在Struts2中,文件上传和下载是通过Action类进行配置和处理的,让我们一起深入了解一下这个过程。 首先,我们要理解上传的流程。在用户端,通常通过HTML表单来选择要上传的文件,表单的`enctype`属性必须设置为`...
这个场景通常出现在用户需要一次性获取多个相关文件,如报告、文档或图片等。本篇将详细介绍如何在ASP.NET MVC中实现这一功能。 首先,我们需要理解ASP.NET MVC的核心概念,包括控制器(Controller)、视图(View)...
在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...
自己用 FinalBuilder Action Studio 自定义修改INI文件值Action,源码
Spring in Action CN.001<br>Spring in Action CN.002<br>Spring in Action ...Action CN.007<br>Spring in Action CN.008<br>Spring in Action CN.BAT<br><br>Spring in Action 中文版的pdf文件较大... <br>本书信息: Craig Walls,...
在Android平台上,开发一个应用程序以实现下载Word文档并顺利打开是一项常见的需求。下面将详细讲解这一过程中的关键知识点,以及如何结合给定的资源进行操作。 1. **Android权限管理**: 在Android中,访问网络和...
在Struts2中,文件上传和下载功能是常见的需求,它允许用户在Web应用中交换文件,例如提交图片、文档或者下载资源。下面将详细讨论Struts2中的文件上传与下载实现,并涵盖相关知识点。 **1. 文件上传** 在Struts2...
压缩包内的 `dotnet 通过 GitHub 的 Action 辅助下载国外资源文件的离线下载方法.md` 文件,很可能是详细说明这个过程的文档,包括了具体的操作步骤、配置示例以及可能遇到的问题和解决方案。阅读这份文档将有助于你...
第二层,Action可以指struts.xml配置文件中的一个条目,这通常定义了Action类和浏览器请求之间的映射关系。最后一个含义,Action指的是Action类中的一个方法,这个方法被用来处理请求并返回处理结果。 接着,我们来...
1. **配置Struts2 Action**:在`struts.xml`配置文件中,你需要定义一个Action,该Action负责处理文件上传请求。Action的类需要继承自`ActionSupport`,并覆盖`execute()`方法,以便处理上传的文件。 2. **设置...
在这个Action中,你需要找到要下载的文件,然后设置响应头以指示浏览器进行文件下载。 3. **设置响应头**:在`execute()`方法中,使用`HttpServletResponse`设置响应头,如`Content-Disposition`(设置文件名)和`...
4. 文件下载的Action实现 对应的Action类,例如FileDownloadAction,需要包含方法来处理文件的读取和输入流的创建。Action类可能像下面这样实现: ```java public class FileDownloadAction extends ActionSupport ...
这个项目的目的就是将UTKinect-Action数据库中的XML数据转换为MAT文件,以便在MATLAB环境中进行高效处理。 首先,我们需要理解XML文件的结构。XML文件通常包含一系列的元素(elements),每个元素都有自己的属性...
5. 手动打包:虽然不是自动化的解决方案,但你可以手动创建一个ZIP文件,将文档库中的所有文件打包在一起,然后提供这个ZIP文件供用户下载。这可以通过SharePoint的WebDAV功能或者通过编程方式实现,例如使用C#或VB...
4. Action Form:这个文件没有明确的扩展名,可能是一个源代码文件、配置文件或者是特定环境下的项目文件,与Action Form的实现或配置有关。 综合以上信息,Action Form是Web开发中的一个重要组成部分,尤其在处理...