单文件上传
首先在页面
<!-- Struts2的文件上传标签 -->
<s:form action="FileUpAction" namespace="/" method="POST"
enctype="multipart/form-data">
<s:file name="fileUpload" label="浏览文件" size="40" />
<s:submit value="submit" name="上传" />
</s:form>
action
package com.bdqn.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport{
private File fileUpload;
private String fileUploadFileName;
public String fileUp() throws Exception {
System.out.println(fileUpload);
FileInputStream fis = new FileInputStream(fileUpload);
File file = new File("D://Tomcat//apache-tomcat-8.5.31//webapps//上传文件Struts//file//"+fileUploadFileName);
if (file.exists()) {
file.createNewFile();
}
FileOutputStream os = new FileOutputStream(file);
byte[] bb = new byte[1024];
while (fis.read(bb)!=-1) {
os.write(bb);
os.flush();
}
return SUCCESS;
}
public File getFileUpload() {
return fileUpload;
}
public void setFileUpload(File fileUpload) {
this.fileUpload = fileUpload;
}
public String getFileUploadFileName() {
return fileUploadFileName;
}
public void setFileUploadFileName(String fileUploadFileName) {
this.fileUploadFileName = fileUploadFileName;
}
}
上传多文件
就是在单文件的基础上把单个属性变为数组
<!-- Struts2的文件上传标签 -->
<s:form action="FileUpAction" namespace="/" method="POST"
enctype="multipart/form-data">
<s:file name="fileUpload" label="浏览文件" size="40" />
<s:file name="fileUpload" label="浏览文件" size="40" />
<s:file name="fileUpload" label="浏览文件" size="40" />
<s:submit value="submit" name="上传" />
</s:form>
package com.bdqn.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport{
private File[] fileUpload;
private String[] fileUploadFileName;
public String fileUp() throws Exception {
for (int i = 0; i < fileUpload.length; i++) {
System.out.println(fileUpload);
FileInputStream fis = new FileInputStream(fileUpload[i]);
File file = new File("D://Tomcat//apache-tomcat-8.5.31//webapps//上传文件Struts//"+fileUploadFileName[i]);
if (file.exists()) {
file.createNewFile();
}
FileOutputStream os = new FileOutputStream(file);
byte[] bb = new byte[1024];
while (fis.read(bb)!=-1) {
os.write(bb);
os.flush();
}
}
return SUCCESS;
}
public File[] getFileUpload() {
return fileUpload;
}
public void setFileUpload(File[] fileUpload) {
this.fileUpload = fileUpload;
}
public String[] getFileUploadFileName() {
return fileUploadFileName;
}
public void setFileUploadFileName(String[] fileUploadFileName) {
this.fileUploadFileName = fileUploadFileName;
}
}
文件自动扫描下载
package com.bdqn.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
public class Fileload extends ActionSupport{
//用来存储文件
private File[] files = new File[100];
//用来存储文件名字
private String[] fileName = new String[100];
//用来存储文件个数,用来遍历
private List<Integer> list = new ArrayList<Integer>();
//页面返回的文件地址,用于下载
private String fileinfo;
//用来记录名字
private String name;
//查询文件的个数和下载地址,存储起来输出到页面
public String load() throws Exception {
//获取项目底下file的所有文件
File file = new File("D://Tomcat//apache-tomcat-8.5.31//webapps//上传文件Struts//file");
//假如页面存在
if (file.exists()) {
//获取该文件夹底下的所有的文件和目录
File[] tempList = file.listFiles();
//循环遍历确定是不是文件,或者是不是目录
for (int i = 0; i < tempList.length; i++) {
if (tempList[i].isFile()) {
//如果文件就加入如文件数组
files[i] = tempList[i];
//同时获取该问文件的名字
fileName[i] = tempList[i].getName();
//为数组的长度进行标记,等下在页面进行遍历也是靠它
list.add(i);
}
}
}
return SUCCESS;
}
public String xiazai() throws Exception {
//读入文件地址
File file = new File(fileinfo);
//读入流
FileInputStream is= new FileInputStream(file);
//接受容器
File file2 = new File("J://"+name);
//写出流
FileOutputStream fis = new FileOutputStream(file2);
//缓冲区
byte[] bb = new byte[1024];
while (is.read(bb)!=-1) {
fis.write(bb);
fis.flush();
}
return SUCCESS;
}
public List<Integer> getList() {
return list;
}
public void setList(List<Integer> list) {
this.list = list;
}
public File[] getFiles() {
return files;
}
public void setFiles(File[] files) {
this.files = files;
}
public String[] getFileName() {
return fileName;
}
public void setFileName(String[] fileName) {
this.fileName = fileName;
}
public String getFileinfo() {
return fileinfo;
}
public void setFileinfo(String fileinfo) {
this.fileinfo = fileinfo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<!-- 文件遍历方法 -->
<action name="loadAction" class="com.bdqn.action.Fileload" method="load">
<result name="success">/loadfile.jsp</result>
</action>
<!-- 文件下载类 -->
<action name="xiazaiAction" class="com.bdqn.action.Fileload" method="xiazai">
<result name="success">/success.jsp</result>
</action>
页面代码,和action是关联的
<table border="2">
<tr>
<td>文件名</td>
<td>下载</td>
</tr>
<c:forEach items="${list}" var="li" varStatus="str">
<tr>
<td>${fileName[li]}</td>
<td>
<form action="/上传文件Struts/Fileload/xiazaiAction">
<input type="hidden" name="fileinfo" value="${files[li]}">
<input type="hidden" name="name" value="${fileName[li]}">
<input type="submit" value="下载">
</form></td>
</tr>
</c:forEach>
</table>
<body>
<a href="fileUp.jsp">上传文件</a>
<a href="/上传文件Struts/Fileload/loadAction">下载文件网页</a>
</body>