struts文件的上传

1.工程如图:


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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 返回json数据要配置,要继承json-default包 -->
<package name="user" namespace="/user" extends="struts-default">
<action name="test" class="com.ask.action.UserAction" method="test">
<result name="test">
/success.jsp
</result>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/png,image/gif,image/jpeg
</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>

5.index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form action="user/test" enctype="multipart/form-data" method="post">
<s:file name="myFile"></s:file>
<input type="submit" name="提交">
</s:form>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值