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、付费专栏及课程。

余额充值