struts2文件上传

struts2本身并没有提供上传的插件

首先我们要建立一个com.vo包,然后建立一个EmpVo类,具体代码如下:

 1 package com.vo;
 2 
 3 import java.io.File;
 4 
 5 public class EmpVo {
 6     public File file;
 7     public String fileFileName;
 8     public String fileContentType;
 9     public File getFile() {
10         return file;
11     }
12     public void setFile(File file) {
13         this.file = file;
14     }
15     public String getFileFileName() {
16         return fileFileName;
17     }
18     public void setFileFileName(String fileFileName) {
19         this.fileFileName = fileFileName;
20     }
21     public String getFileContentType() {
22         return fileContentType;
23     }
24     public void setFileFileContentType(String fileFileContentType) {
25         this.fileContentType = fileFileContentType;
26     }
27     
28 }

在视图层显示页面应该这样写:

1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
2 <%@ taglib prefix="s" uri="/struts-tags" %>
3 <form action="emp!upload.action" enctype="multipart/form-data" method="post">
4     文件上传:<input type="file" value="浏览" name="empVo.file"><br>
5     <input type="submit" value="提交">
6 </form>

注意这里<form>标签里面一定要加上enctype="multipart/form-data"这是处理文件上传的;name="empVo.file"这里struts2会自动将文件的内容传给EmpVo里面的file,文件名传给fileFileName,文件后缀名传给fileContentType.

com.action

 1 package com.action;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 import java.io.InputStream;
 9 import java.io.OutputStream;
10 
11 import org.apache.struts2.ServletActionContext;
12 
13 import com.service.EmpService;
14 import com.vo.EmpVo;
15 
16 public class EmpAction {
17     private EmpVo empVo;
18     
19     public EmpVo getEmpVo() {
20         return empVo;
21     }
22 
23     public void setEmpVo(EmpVo empVo) {
24         this.empVo = empVo;
25     }
26 
27     //上传
28     public String upload() throws IOException{
29         //要上传到哪里
30         String path=ServletActionContext.getServletContext().getRealPath("/text");
31         //得到上传内容,创建文件输入流
32         InputStream is=new FileInputStream(empVo.getFile());
33         if(is==null){
34             return "err";
35         }
36         //设置目标文件
37         File toFile=new File(path,empVo.getFileFileName());
38         //创建文件输出流
39         OutputStream os=new FileOutputStream(toFile);
40         //设置缓存  
41         byte[] buffer=new byte[1024];
42         int length=0;
43         //读取file文件输出到tofile文件中
44         while((length=is.read(buffer))>0){
45             os.write(buffer,0,length);
46         } 
47         System.out.println("上传文件名"+empVo.getFileFileName()); 
48         System.out.println("上传文件类型"+empVo.getFileContentType());
49         is.close();
50         os.close();
51 
52         return "show";
53     }
54 
55 
56 }

文件夹text要放在WebRoot下面

发布运行的时候会自动将提交的内容上传到服务器

原文地址:https://www.cnblogs.com/xinxinjava/p/3029289.html