Struts上传文件实现代码
界面代码:
1、upload.jsp页面代码
<%@ 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>文件上传</title>
</head>
<body>
<!-- 文件上传 -->
<s:form action="upload" method="post" enctype="multipart/form-data">
<table>
<tr>
<!-- 上传文件标签定义 -->
<td>上传文件:<s:file name="file"></s:file></td>
</tr>
<tr>
<td>再次上传文件:<s:file name="file"></s:file></td>
</tr>
<tr>
<td align="left"><s:submit name="submit" value="提交"></s:submit></td>
</tr>
</table>
</s:form>
</body>
</html>
下载页面代码(result.jsp)
<%@ 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>上传结果</title>
</head>
<body>
上传文件:
<table>
<!-- 循环显示上传成功文件名 -->
<s:iterator value="fileFileName" status="fn">
<tr>
<td>
<!-- 上传成功文件名 -->
<s:property/>
</td>
<td>
<!-- 下载文件链接内容为定义的下载Action -->
<!-- 下载文件名作为链接参数fileName值,用OGNL表达式表达 -->
<a href="<s:url value='download.action'><s:param name='fileName' value='fileFileName[#fn.getIndex()]'/></s:url>">下载</a>
</td>
</tr>
</s:iterator>
</table>
</body>
</html>
功能实现代码:
1、上传功能
package struts.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport
{
//上传文件存放路径
private final static String UPLOADDIR="/upload";
//上传文件集合
private List<File> file;
//上传文件名集合
private List<String> fileFileName;
//上传文件内容类型集合
private List<String> fileContentType;
public List<File> getFile()
{
return file;
}
public void setFile(List<File> file)
{
this.file = file;
}
public List<String> getFileFileName()
{
return fileFileName;
}
public void setFileFileName(List<String> fileFileName)
{
this.fileFileName = fileFileName;
}
public List<String> getFileContentType()
{
return fileContentType;
}
public void setFileContentType(List<String> fileContentType)
{
this.fileContentType = fileContentType;
}
//执行上传文件
private void uploadFile(int i) throws IOException
{
try {
InputStream in=new FileInputStream(file.get(i));
String dir=ServletActionContext.getRequest().getRealPath(UPLOADDIR);
File uploadFile=new File(dir,this.getFileFileName().get(i));
OutputStream out=new FileOutputStream(uploadFile);
byte[] buffer=new byte[1024*1024];
int length;
while((length=in.read(buffer))>0)
{
out.write(buffer,0,length);
}
in.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
//循环上传每个文件
public String execute()throws Exception
{
for(int i=0;i<file.size();i++)
{
uploadFile(i);
}
return "success";
}
}
2、下载功能
package struts.action;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DownLoadAction extends ActionSupport
{
//下载文件原始存放路径
private final static String DOWNLOADFILEPATH="/upload";
//文件参数变量
private String fileName;
public String getFileName()
{
return fileName;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
//从下载文件原始存放路径读取得到文件输出流
public InputStream getDownloadFile()
{
return ServletActionContext.getServletContext().getResourceAsStream(DOWNLOADFILEPATH+"/"+fileName);
}
public String getDownloadChineseFileName()
{
String downloadChineseFileName=fileName;
try
{
downloadChineseFileName=new String(downloadChineseFileName.getBytes(),"ISO8859-1");
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
return downloadChineseFileName;
}
public String execute()
{
return "success";
}
}
每天一点点希望对大家有利!
分享到:
相关推荐
文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`<input type="file">`元素,用户可以选择本地文件。Struts2的Action类会接收这个文件,并使用`Commons ...
总的来说,"基于Struts的文件上传下载源代码"是一个很好的实践项目,它涵盖了Struts框架的用法,文件上传和下载的实现,以及一些基础的Web开发概念。通过深入研究和模仿这些代码,你可以更好地掌握Java Web开发的...
在这个“struts2上传文件源代码”中,我们将深入探讨Struts2如何实现文件上传功能,以及涉及到的相关知识点。 首先,文件上传是Web应用中常见的功能,它允许用户从本地计算机选择文件并将其发送到服务器。在Struts2...
避免路径遍历攻击,确保文件存储在安全目录下,防止恶意文件的执行,以及检查上传文件的大小和类型,防止过大文件导致服务崩溃或恶意文件注入。 在本例中,提供的"updown"可能是一个包含示例代码、配置文件或测试...
创建`UploadAction`类,定义`List<FileInfo>`字段,并实现上传文件的方法。例如: ```java public class UploadAction extends ActionSupport { private List<FileInfo> files; // getters and setters... ...
在Struts配置中,可以通过`filter-config`的`maxSize`属性来限制上传文件的大小。如果上传的文件超过这个限制,Struts会抛出异常,你可以捕获这个异常并返回相应的错误信息给用户。 4. **版本问题** Struts有多个...
- `FormFile`: 用于封装上传文件的信息,包括文件名、类型、大小等。 ### 4. 配置文件 在Struts配置文件(struts-config.xml)中,你需要添加`multipart-config`元素到`<form-beans>`部分,指定文件上传的临时存储...
其中,`getUpload()`返回上传文件的输入流,`getSavePath()`返回文件保存的路径,`getNumberFileName()`则是生成一个唯一文件名的方法,通常基于当前时间戳,避免文件重名。 5. **JSP页面**:在用户界面,需要一个...
7. **安全性考虑**:为了确保应用的安全性,应限制上传文件的大小和类型,防止恶意用户上传大文件占用服务器资源,或者上传包含恶意代码的文件。 在提供的`UpLoadWeb`压缩包中,包含了完整的源码,包括ActionForm、...
5. **文件大小转换**:根据文件的大小单位(Byte, KB, MB),进行相应的格式化输出,以便于用户理解上传文件的实际大小。 #### 示例代码解析 - **文件名的生成**:利用当前时间戳生成唯一的文件名,确保每个上传的...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。文件批量上传是Web应用中常见的需求,特别是在处理大量数据或者...同时,为了安全起见,应对上传文件进行权限控制,防止恶意文件的上传。
在这个“Struts1实现的文件上传”项目中,我们将深入探讨如何在Struts1框架下实现文件上传功能,并不涉及文件下载的部分。 首先,理解文件上传的基本流程是至关重要的。在Web应用中,用户通过HTML表单选择本地文件...
这个"struts2文件上传代码.rar"压缩包很可能是包含了一个示例项目,展示了如何在Struts2框架下实现文件上传。 首先,我们需要了解Struts2中的Action类。Action类是处理用户请求的核心组件,通常每个Action类对应一...
1.能够对多个文件进行上传(可以选择上传文件个数,也即上传文件个数不定) 2.能够对上传路径进行配置文件指定(upload.properties),使用了一些类似单例模式的静态代码块 3.Struts2进行下载处理,能对上传的所有...
Struts和SwfUpload是两种在Web开发中用于构建强大功能的应用工具,它们结合使用可以实现高效的文件上传功能。在本文中,我们将深入探讨这两个组件以及如何将它们整合以实现文件上传。 首先,Struts是一个基于MVC...
在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...
在Struts2文件上传中,通常会有一个成员变量用于存储上传文件的MIME类型,这个变量的名称应该是`uploadContentType`而不是`uploadContextType`。尽管这个错误并不会导致程序无法运行,但修正它能提高代码的可读性和...
-- 设置上传文件的最大大小 --> <package name="default" extends="struts-default"> <result name="success">/success.jsp <result name="input">/upload.jsp ``` 在JSP页面中,创建一个HTML表单,使用`...
默认情况下,这个拦截器可能会限制上传文件的类型为`.txt`,并且大小不超过10MB。这种限制是为了防止恶意用户上传大文件或者非文本文件,从而可能对服务器造成压力或引入安全风险。 配置文件`struts.xml`中关于文件...