1.工程如图:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiATN381dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yMzUjM0AjZlV2MkZDOllTZyYzX3UTNxETMzAzLchDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
2.UserAction.java
package com.ask.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 org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
private File myFile;
private String myFileContentType;
private String myFileFileName;
public String getMyFileContentType() {
return myFileContentType;
}
public void setMyFileContentType(String myFileContentType) {
this.myFileContentType = myFileContentType;
}
public String getMyFileFileName() {
return myFileFileName;
}
public void setMyFileFileName(String myFileFileName) {
this.myFileFileName = myFileFileName;
}
public File getMyFile() {
return myFile;
}
public void setMyFile(File myFile) {
this.myFile = myFile;
}
public String test() throws IOException{
System.out.println(myFile);
System.out.println(myFileFileName);
System.out.println(myFileContentType);
String path = ServletActionContext.getServletContext()
.getRealPath("/upload");
System.out.println("path:"+path);
try {
InputStream file1=new FileInputStream(myFile);
path=path+File.separator+myFileFileName;
System.out.println(path);
OutputStream os=new FileOutputStream(path);
byte[] buf=new byte[1024*1024];
int len=0;
while((len=file1.read(buf))!=-1){
os.write(buf,0,len);
}
file1.close();
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return "test";
}
}
3.UserAction1.java
package com.ask.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 javax.servlet.ServletContext;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction1 extends ActionSupport{
// myFile属性用来封装上传的文件
private File myFile;
// myFileContentType属性用来封装上传文件的类型
private String myFileContentType;
// myFileFileName属性用来封装上传文件的文件名
private String myFileFileName;
//获得myFile值
public File getMyFile() {
return myFile;
}
//设置myFile值
public void setMyFile(File myFile) {
this.myFile = myFile;
}
//获得myFileContentType值
public String getMyFileContentType() {
return myFileContentType;
}
//设置myFileContentType值
public void setMyFileContentType(String myFileContentType) {
this.myFileContentType = myFileContentType;
}
//获得myFileFileName值
public String getMyFileFileName() {
return myFileFileName;
}
//设置myFileFileName值
public void setMyFileFileName(String myFileFileName) {
this.myFileFileName = myFileFileName;
}
public String test() throws Exception {
//基于myFile创建一个文件输入流
InputStream is = new FileInputStream(myFile);
// 设置上传文件目录
String uploadPath = ServletActionContext.getServletContext()
.getRealPath("/upload");
// 设置目标文件
File toFile = new File(uploadPath, this.getMyFileFileName());
// 创建一个输出流
OutputStream os = new FileOutputStream(toFile);
//设置缓存
byte[] buffer = new byte[1024];
int length = 0;
//读取myFile文件输出到toFile文件中
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
System.out.println("上传文件名"+myFileFileName);
System.out.println("上传文件类型"+myFileContentType);
//关闭输入流
is.close();
//关闭输出流
os.close();
return "test";
}
}
4.struts.xml