1.action:
public String fileUpload()throws Exception{
FileOutputStream out=null;
//String cDate = DateUtils.convertDateString(new Date(), "yyyyMMdd");
String path = ServletActionContext.getServletContext().getRealPath("/WEB-INF/upload/");
String filename = path+File.separator+uploadFileName;
System.out.println(upload.getAbsolutePath()+" "+upload.getName());
String filename2 = path+File.separator;
FileInputStream in = new FileInputStream(upload);
File f=new File(filename2);
if(!f.exists()){
f.mkdirs();
out= new FileOutputStream(new File(filename));
}
else{
out= new FileOutputStream(new File(filename));
}
byte[]b = new byte[1024];
int len = 0;
while((len=in.read(b))>0){
out.write(b,0,len);
}
out.close();//关闭流;
in.close();
return SUCCESS;
}
public void print_file(String dir) {
File file = new File(dir);
File files[] = file.listFiles();
for (File tempFile : files) {
if (tempFile.isDirectory()) {
print_file(tempFile.getAbsolutePath());
} else {
fileCount++;
filenameList.add(tempFile.getAbsolutePath().substring(tempFile.getAbsolutePath().lastIndexOf("\\")+1,
tempFile.getAbsolutePath().length()));
}
}
}
public String downloadFile(){
inputStream = ServletActionContext.getServletContext().getResourceAsStream("/WEB-INF/upload/" + fileName);
return SUCCESS;
}
2
<actionname="downloadFile"class="XXX.XXX" method="downloadFile">
<result name="success" type="stream">
<param name="contentType">application/octet-stream</param><!-- inline 为打开方式 -->
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="inputName">inputStream</param>
<param name="bufferSize">2048</param>
</result>
</action>
contentType
内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片
inputName
下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法
contentDisposition
文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:
attachment;filename="struts2.txt",表示文件下载的时候保存的名字应为struts2.txt。如果直接写filename="struts2.txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline; filename="struts2.txt"
3
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '1.jsp' starting page</title>
</head>
<body>
<s:form action="fileUpload" method="post" enctype="multipart/form-data">
<s:file name="upload" label="上传"></s:file>
<s:submit value="上传"></s:submit>
</s:form>
</body>
</html>
4
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<h3>下载文件</h3>
<table align="center" border="0">
<tr>
<td width="10%">序号</td>
<td width="20%">文件类型</td>
<td width="60%">文件名</td>
<td width="10%">下载</td>
</tr>
<tr>
<s:iterator status="status" value="filenameList" var="f">
<tr>
<td><s:property value="#status.index+1" /></td>
<td><img src="${pageContext.request.contextPath}/WEB-INF/upload/<s:property value="#f"/>" width="47" height="19" border="0" ></img></td>
<td><s:property value="#f" /></td>
<td><a href="${pageContext.request.contextPath}/downloadFile.action?fileName=<s:property value="#f" />">download</a></td>
</tr>
</s:iterator>
</table>
<hr>
<s:debug></s:debug>
</body>
</html>
- 大小: 54.3 KB
分享到:
相关推荐
1. 配置Struts的Upload插件:在struts-config.xml文件中,需要配置.struts.action.upload.MaxSize和.struts.action.upload.SizeThreshold属性,以限制上传文件的大小。 2. 创建表单:在HTML页面上,使用`...
在“Struts+Spring+Hibernate_upload_and_download.rar_Spring+Hibernate”这个压缩包中,我们主要关注的是这三大框架在文件上传下载功能上的实现。 Struts 是一个基于MVC(Model-View-Controller)设计模式的Web...
### Struts2与ExtJS集成实现文件的上传、下载与删除功能详解 #### 一、项目背景与技术栈概述 本案例旨在通过Struts2框架与ExtJS前端库的结合来实现文件的批量上传、下载以及删除功能。适用于对Struts2与ExtJS有...
public StreamResult download() throws IOException { StreamResult result = new StreamResult(); result.setInputStream(new FileInputStream(fileLocation)); result.setContentType("application/octet-...
6. **插件体系**:Struts 2拥有强大的插件机制,可以扩展其功能,如 tiles 插件用于布局管理,json-plugin用于JSON响应,file-upload插件处理文件上传等。 7. **Tiles框架集成**:Tiles提供了一种方式来组织和复用...
标题“FileUpLoadAndDownLoad”和描述“FileUpLoadAndDownLoad上传”都直指这一主题。文件上传允许用户将本地计算机上的文件传输到服务器,而下载则是相反的过程,服务器上的文件被获取并保存到用户的设备上。在标签...
<package name="upload" namespace="/" extends="struts-default"> <action name="upload" class="com.yourcompany.UploadAction"> <result name="success">/success.jsp </struts> ``` 在JSP页面上,我们...
在文件上传下载场景中,一个Action类通常包含两个主要方法:`upload()` 和 `download()`。`upload()` 方法处理文件上传,而 `download()` 方法则负责文件的下载服务。 文件上传的核心组件是`Commons FileUpload`库...
2. **定义Download Action**:创建一个Action类,处理文件下载请求。在这个Action中,你需要找到要下载的文件,然后设置响应头以指示浏览器进行文件下载。 3. **设置响应头**:在`execute()`方法中,使用`...
以上配置确保了“upload”请求会被路由到`UploadAction`的`execute`方法,而“download”请求则会调用`DownloadAction`的`download`方法,返回的`InputStream`会被用来创建HTTP响应。 需要注意的是,实际应用中,...
此外,Struts2提供了插件机制,如Struts2 File Upload and Download Plugin,可以帮助简化文件下载的实现。这些插件通常提供更高级的功能,如支持大文件下载、断点续传等。 在开发过程中,确保安全是非常重要的。...
为了实现文件上传,项目可能包含一个名为`upload.action`的Action,这个Action会接收文件并将其保存到服务器的特定目录下。同时,项目中可能存在一个对应的JSP页面,其中包含一个`<s:form>`标签,这个表单的enctype...
### Struts2上传方法 #### 1. 文件上传的基本原理 在进行文件上传时,我们需要了解文件是如何通过Web表单提交的。表单元素的`enctype`属性指定了表单数据的编码方式,这对于文件上传至关重要。Struts2和其他Web...
2.能够对上传路径进行配置文件指定(upload.properties),使用了一些类似单例模式的静态代码块 3.Struts2进行下载处理,能对上传的所有文件进行下载(多个) 4.文件保存的名称UUID生成,不过显示并下载的名称都是原...
在Struts1.x中,文件上传主要依赖于`org.apache.struts.upload`包中的类。最常用的是`MultipartRequestHandler`,它实现了Servlet API中的`HttpServletRequestWrapper`接口,允许处理multipart/form-data类型的请求...
接下来,我们需要在struts.xml配置文件中为文件上传操作指定一个Action,配置`<file-upload>`元素来启用文件上传功能: ```xml <action name="upload" class="com.example.UploadAction"> ...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Struts2中,处理文件上传和下载是常见的需求,这通常涉及到用户交互,如上传图片、文档或任何其他类型的数据。这篇博客...
在Struts框架中,文件的上传和下载是常见的功能需求,用于实现用户交互,如上传图片、文档等,或者提供资源的下载服务。下面将详细探讨Struts中文件上传和下载的实现机制。 一、文件上传 1. 配置文件:在Struts2中...
Struts框架是Java Web开发中常用的一个开源MVC框架,由Apache软件基金会维护。它提供了一种组织应用程序的方式,使得开发者可以更容易地构建基于HTTP协议的、可维护性高的Web应用。在这个“Struts框架文件上传下载...
在Struts2中,这可以通过使用`struts2-file-upload-plugin`插件来实现。首先,你需要在项目的配置文件(如struts.xml)中启用文件上传的支持,并配置相应的拦截器。接着,在Action类中创建一个字段来接收上传的文件...