老师说struts2文件上传而已,你看下面。

1.文件上传的页面upload.jsp。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>文件上传</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
  </head>
  
  <body>
   <form action="user_test" method="post" enctype="multipart/form-data">
   	文件:<input type="file" name="file"/>
   <br/>
   <input type="submit" value="submit">
   </form>
  </body>
</html>

注意:
1.文件上传操作表单的method必须为post。
2.表单数据编码的enctype为multipart/form-data
3.记住file的name为file一会说它。

2.struts2文件上传默认使用的是apache commons的FileUpload。
action层的代码这个样子的:
public class UserAction extends ActionSupport {

       /**文件上传相关属性**/
	private File file;//前台表单名字需叫file
	private String fileFileName;
	private String fileContentType;
        //setter and getter 此处省略了
       //上传的主要方法
        @SuppressWarnings("deprecation")
	protected boolean upload(){
		boolean flag = false;
		InputStream is = null;
		OutputStream os = null;
		try{
		 is = new FileInputStream(file);
		String root = ServletActionContext.getRequest().getRealPath("/upload");//文件保存的路径
		File destFile = new File(root,this.getFileFileName());
		os = new FileOutputStream(destFile);
		byte[] buffer = new byte[400];
		int length =0;
		while((length = is.read(buffer))>0){
			os.write(buffer,0,length);
		}
		flag = true;
		}catch(Exception ex){
			flag = false;
		}finally{
			try {
				is.close();
				os.close();
			} catch (IOException e) {
				//do nothing
			}
			
		}
		return flag;
		
	}
	


}
/**
*前台表单提交到这里
*/
public String test(){
		if(upload()){
			successPath = "/upload/uploadresult.jsp";
			return SUCCESS;
		}else{
			 successPath = "/upload/uploadtest.jsp";
			return SUCCESS;
		}
		
	}


注意:
1.文件上传的相关属性那里,页面file的name是file,
这里就定义一个file,fileFileName,fileContentType。
如果页面file的name为abc,
这里就定义一个abc,abcFileName,abcContentType。


3。这里以图片为例子显示上传的图片页面uploadresult.jsp。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>显示图片</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
  </head>
  <body>
   <img  src="<%=request.getContextPath() %>/upload/<s:property value="fileFileName"/>" />
  </body>
</html>


你可能感兴趣的:(文件上传,struts2)