`

webwork上传单个文件

阅读更多

版本:webwork2.2.5

 

配置:

1.webwork.properties的配置:

webwork.i18n.encoding=GBK
webwork.multipart.parser=jakarta
webwork.multipart.saveDir=d:/temp

 2.xwork.xml的配置:

<package name="default" extends="webwork-default">
	<interceptors>
		<interceptor name="upload" class="com.opensymphony.webwork.interceptor.FileUploadInterceptor"/>
		<interceptor-stack name="vxStack">
			<interceptor-ref name="params" />
			<interceptor-ref name="model-driven" />
			<interceptor-ref name="upload"/>
			<interceptor-ref name="defaultStack"/>
		</interceptor-stack>
	</interceptors>	
	<global-results>
		<result name="exception" type="dispatcher">/error.jsp</result>
		<result name="resetPassword" type="dispatcher">/resetPassword.jsp</result>
	</global-results>
</package>

 3.config.properties的配置:

#windows
saveDir=d:/upload/

 

4.uploadFile.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
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>webwork上传单个文件</title>
  </head>
  
  <body>
    <form name="form1" method="post" enctype="multipart/form-data" action="member/upload.do">
    	<input type="file" name="file"><input type="submit" value="上传">
    </form>
  </body>
</html>

 

5.uploadAction.java

package com.luodada.trans.soa.busi.web;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ResourceBundle;

import com.opensymphony.xwork.ActionSupport;

public class UploadAction extends ActionSupport {
	
	private String fileFileName; 
	private File file; 
	
	public String uploadFile() { 
		upload();
		return "succ"; 
	} 
	
	// 上传文件 
	private void upload() { 
		if(file!=null) { 
			FileOutputStream outputStream; 
				try{ 
					ResourceBundle rb = ResourceBundle.getBundle("config");
					String fileDir = rb.getString("saveDir") + File.separator;
					Date date = new Date();
					DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
					String time = df.format(date);
					fileFileName = time + "_" + fileFileName;
					String filePath = fileDir + fileFileName;
					try {
						// 创建目录 
						File f = new File(fileDir);   
						f.mkdirs(); 
					} catch (Exception ex) {
						ex.printStackTrace();
					}
					outputStream = new FileOutputStream(filePath); 
					FileInputStream fileIn = new FileInputStream(file); 
					byte[] buffer = new byte[1024]; 
					int len; 
					while ((len = fileIn.read(buffer)) > 0) { 
						outputStream.write(buffer, 0, len); 
					} 
					fileIn.close(); 
					outputStream.close();
				} catch (FileNotFoundException ex) { 
					ex.printStackTrace(); 
				} catch (IOException ex) {
					ex.printStackTrace();
				}
				System.out.println("uploadfile name="+fileFileName); 
		} else {
			System.out.println("file is null!"); 
		}
	}

	public File getFile() { 
		return file; 
	} 

	public void setFile(File file) { 
		this.file = file; 
	} 

	public String getFileFileName() { 
		return fileFileName; 
	} 

	public void setFileFileName(String fileName) { 
		this.fileFileName = fileName; 
	}
}

 

6.xwork-config.xml的配置

<!-- 上传文件 -->
<action name="upload" class="uploadAction" method="uploadFile">
       <interceptor-ref name="fileUpload" />
       <interceptor-ref name="defaultStack" />
       <result name="succ">/upload/uploadFileSucc.jsp</result>
</action>

 

 

注意事项:

1.<form>表单中要加上属性  enctype="multipart/form-data"

2.xwork-config.xml中要配置<interceptor-ref name="fileUpload" /><interceptor-ref name="defaultStack" />

3.xwork-config.xml中要添加method="**"的属性

4.webwork上传文件只是暂时存放在一个文件夹等待action里处理,处理完毕就会删除临时文件,所以在action里一定要自行对文件进行处理,不能指望它自动保存,因此在 upload()函数里保存了一次。

5.webwork.multipart.parser是设置处理上传的类的,有jakarta、cos、pell 三种设置, jakarta是默认的设置;注意设置了相应的类要把相应的jar放进来(jakarta支持多文件上传,cos和pell不支持); 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics