1.struts2文件上传
Struts2 文件上传基于 Struts2 拦截器实现;Struts2 文件上传使用的是 fileupload 组件;Struts2 文件上传大小默认是 2M。
(1)在 fileupload.jsp 文件的 Form表单中配置 enctype="multipart/form-data"
<form action="upload" method="post" enctype="multipart/form-data">
文件:<input type="file" name="cocoomg"/><br/>
<input type="submit" value="提交"/>
</form>
(2)在 FileUploadAction.java 文件中定义上传文件,上传文件名,上传文件类型。
Struts2 获取上传文件:name (name 是文件表单的 name)
Struts2 获取上传文件名:name+FileName;
Struts2 获取上传文件的类型:name+ContentType;
private File cocoomg; // 文件
private String cocoomgFileName; // 文件名
private String cocoomgContentType; // 文件类型
@Override
public String execute() throws Exception {
System.out.println("文件名:"+cocoomgFileName);
System.out.println("文件类型:"+cocoomgContentType);
String filePath="C:/"+cocoomgFileName; //上传到C盘
File saveFile=new File(filePath);
FileUtils.copyFile(cocoomg, saveFile); //(File srcFile, File destFile)
return SUCCESS;
}
2.配置文件的大小及类型
在struts.xml文件中配置拦截器
<package name="manager" extends="struts-default">
<action name="upload" class="com.java1234.action.FileUploadAction">
<result name="success">/success.jsp</result>
<result name="input">/fileupload.jsp</result>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param>
<param name="maximumSize">81101</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
大文件上传(默认最大2M),在struts.xml文件中配置
<constant name="struts.multipart.maxSize" value="20000000"></constant>
3.多文件上传
(1)在 fileupload.jsp 文件的 Form表单中配置 enctype="multipart/form-data"
<form action="upload" method="post" enctype="multipart/form-data">
文件1:<input type="file" name="cocoomg"/><br/>
文件2:<input type="file" name="cocoomg"/><br/>
文件3:<input type="file" name="cocoomg"/><br/>
<input type="submit" value="提交"/>
</form>
(2)在 FilesUploadAction.java 文件中定义上传文件,上传文件名,上传文件类型。
Struts2 获取上传文件:name (name 是文件表单的 name)
Struts2 获取上传文件名:name+FileName;
Struts2 获取上传文件的类型:name+ContentType;
private File[] cocoomg; // 文件
private String[] cocoomgFileName; // 文件名
private String[] cocoomgContentType; // 文件类型
@Override
public String execute() throws Exception {
for(int i=0; i<cocoomg.length; i++){
System.out.println("文件名:"+cocoomgFileName[i]);
System.out.println("文件类型:"+cocoomgContentType[i]);
String filePath="C:/"+cocoomgFileName[i]; //上传到C盘
File saveFile=new File(filePath);
FileUtils.copyFile(cocoomg[i], saveFile); //(File srcFile, File destFile)
}
return SUCCESS;
}
4.文件下载
返回的是文件流 inputStream
(1)FileDownloadAction.java 文件
public class FileDownloadAction extends ActionSupport{
private String fileName;
public String getFileName() throws Exception{
fileName=new String(fileName.getBytes(),"ISO8859-1"); //中文名称乱码解决办法
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
//要求使用 InputStream getInputStream()
public InputStream getInputStream()throws Exception{
File file=new File("C:/美女1.jpg");
this.fileName="美女1号"; //此处不需要加后缀
return new FileInputStream(file);
}
(2)struts.xml 文件配置不一样
<action name="download" class="com.java1234.action.FileDownloadAction">
<result type="stream">
<param name="contentDisposition">attachment;filename=${fileName}</param>
</result>
</action>
(3)filedownload.jsp
<a href="download">文件下载</a>
5.防重复提交
学习地址推荐:www.java1234.com