1、通过流下载附件
//文件下载
public String fileDown(){
HttpServletResponse response = ServletActionContext.getResponse();
try {
String path=session.getServletContext().getRealPath("/");
filename = new String( filename.getBytes("ISO-8859-1") , "UTF-8");
String downname = filename.split("---")[2];
String url = path+"doc/affix/"+tba.getIassistnoticeid()+"/"+filename;
OutputStream out = response.getOutputStream();
response.reset();
// 指定返回的是一个不能被客户端读取的流,必须被下载
response.setContentType("application/octet-stream;charset=UTF-8");
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
response.setHeader("Content-disposition", "attachment; filename="+URLEncoder.encode(downname,"UTF-8")); //URLEncoder.encode转换,解除文件名乱码
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
//response.addheader("content-length", url.length.tostring());
FileInputStream fis=new FileInputStream(url);
int i=-1;
while((i=fis.read())!=-1){//读文件
out.write(i); //写文件
}
out.flush();out.close();fis.close();
} catch (IOException e) {
e.printStackTrace();
}finally{
return null;
}
}
2、使用struts2下载附件//文件下载
public String fileDown(){
mimeType = session.getServletContext().getMimeType(filename);
return "filedown";
}
/**
* 封装处理文件名
*/
public void setFilename(String filename) {
try {
this.filename = new String(filename.getBytes("ISO8859-1"),"UTF-8");
downname = filename.split("---")[2];
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public String getFilename() {
try {
return new String(filename.getBytes(),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
return this.filename;
}
}
public String getMimeType() {
return mimeType;
}
public InputStream getInStream() {
String path=session.getServletContext().getRealPath("/");
String url = path+"doc/affix/"+tba.getIassistnoticeid()+"/"+filename;
try {
inStream = new FileInputStream(url);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
if (inStream == null) {
inStream = new ByteArrayInputStream("Sorry,File not found !".getBytes());
}
return inStream;
}
public String getDownname() {
return downname;
}
public void setDownname(String downname) {
this.downname = downname;
}
struts2配置文件 <result name="filedown" type="stream">
<param name="contentDisposition">attachment;filename="${downname}"</param>
<param name="contentType">${mimeType}</param>
<param name="inputName">inStream</param>
</result>
分享到:
相关推荐
通过上述步骤,我们就可以在Struts2框架下实现文件流方式的下载功能,无论是Excel、TXT还是图片,都能有效地直接返回给浏览器,让客户端进行下载。这种方式既节省了服务器资源,也提高了用户体验。在实际项目中,...
通过定义一个Action类处理下载请求,配置Struts2的Action映射,以及在JSP页面上创建触发下载的链接,我们可以为用户提供安全、便捷的文件下载体验。这个案例对于理解和实现在Java web应用中处理文件下载的流程非常有...
在Struts2中实现下载功能是一项常见的需求,这通常涉及到处理文件流并将其发送到客户端。以下是如何在Struts2中实现下载功能的详细步骤: 1. **Struts2配置**: 在Struts2的配置文件(例如struts.xml或类似的配置...
在“struts2文件下载”这个主题中,我们主要关注的是如何使用Struts2来实现文件的下载功能。这篇博客文章可能探讨了在Struts2环境下处理文件下载的步骤和技术。 在Struts2中,`DownloadAction.java`很可能是一个...
通过上述知识点,我们可以构建一个基于Struts2框架的文件上传和下载功能。这些功能在Web应用中非常实用,可以用于上传用户资料、产品图片、报表文件等,以及提供各种文件的下载服务。开发者应当注意这些操作的安全性...
总结来说,Struts2 ZIP文件上传下载涉及到的主要知识点有:Struts2 MVC框架的使用、文件上传与下载的处理、异常处理、流处理以及ZIP文件操作。通过合理的错误处理和详细的信息反馈,可以显著提高用户体验,同时也...
`Content-Type`设置为`application/octet-stream`是为了让浏览器识别为二进制流,`Content-Disposition`中的`attachment`表示附件下载,`filename`则指定了下载后的文件名。 在Struts配置文件中,我们需要将这个...
在这个“使用struts2写的一个超级简易的上传下载Demo”中,我们将探讨如何利用Struts2实现文件的上传与下载功能。 首先,我们来理解一下Struts2的核心概念。Struts2框架基于拦截器(Interceptor)机制,它在请求...
在Struts2中,文件下载可以通过创建一个返回文件的Action实现。 1. **文件路径设置**: - 需要确定要下载的文件在服务器上的具体路径。 2. **Action配置**: - 在Action中,创建一个方法,该方法返回一个`...
另一种常见方法是使用Struts2的StreamResult,它允许你直接从Action返回文件输入流,框架会自动处理响应的设置和流的传输。 在实际开发中,为了安全和性能考虑,你可能需要处理一些额外的问题,如文件大小限制、...
在本项目中,我们关注的是Struts2中的文件上传和下载功能,这些功能是Web开发中常见的需求,尤其在处理用户数据提交或提供资源下载时。下面将详细介绍这个“struts2文件上传下载(注解版)”项目的关键知识点。 1. ...
Struts2file2是一个基于Maven构建的Java Web项目,主要功能是实现文件的上传与下载功能。在Struts2框架下,文件上传和下载是常见的需求,它们涉及到Web开发中的许多关键概念和技术,包括HTTP协议、表单提交、文件流...
通过以上步骤,你可以在Struts2应用中实现基本的文件上传和下载功能。但实际项目中可能还需要结合具体的业务逻辑和安全策略进行更复杂的设计和实现。如果想深入了解Struts2的源码和工作原理,可以阅读相关文档或查看...
标签"附件 , 包下载"提示我们这个压缩包可能包含了一些Struts2的库文件或者其他相关资源,供用户下载后在自己的项目中使用。 文件名"常用lib"暗示了压缩包内可能包含了一些常用的库文件,这些库文件可能是Struts2...
Struts2是一个非常流行的Java Web框架,用于构建企业级应用。...通过以上步骤和方法,可以有效地解决Struts2下载取消时的异常问题,确保文件下载功能的稳定性和用户体验。在实际项目中,应根据具体情况进行调整和优化。
通过zip压缩文件,然后下载这个文件,有xml配置,action、service、serviceImpl、jsp
在本项目中,我们关注的是如何使用Struts2来实现实时的文件交互操作,即文件的上传与下载。 文件上传在Web应用中很常见,例如用户提交表单时可能需要附加文件,如简历、图片或文档等。Struts2提供了一套完整的机制...
Struts2的上传和下载功能是通过Action类和相关的配置实现的,这些配置通常位于struts.xml文件中,定义了Action的映射、结果类型以及可能需要的拦截器。 总的来说,这个"struts2 上传文件及打包下载zip"的示例涵盖了...
通过以上这些知识点,你可以实现一个安全、高效且用户友好的Struts2文件下载功能。下载压缩包中的"download"文件,很可能是包含了实现这个功能的相关代码示例,通过研究这个示例,可以加深对上述概念的理解。
Struts2是一个强大的Java web框架,它提供了丰富的功能...通过学习和实践这个案例,开发者可以更好地理解和掌握Struts2的注解配置以及文件操作,提升开发效率,同时也了解了如何在Web应用中安全地处理文件上传和下载。