用struts2上传文件,

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%>">
  </head>
  <body>
    <form action="upfile.action" method="post" enctype="multipart/form-data">
    	<input type="file" name="myFile">
    	<input type="submit" value="提 交">
    </form>>
  </body>
</html>
 
 
 文件上传的action
package com.action;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class UpFile extends ActionSupport {
	private File myFile;
	private String myFileFileName;
	private String myFileContentType;
	ActionContext actionContext = ActionContext.getContext();

	public String upfile() {
		System.out.println(myFileFileName);
		/*
		 * 获取upload
		 * 文件夹在磁盘上的绝对路径>>”H:/apache-tomcat-8.0.52/webapps/struts2/upload“
		 */
      //开始的时候,上传文件可以成功,但是上传的文件要么找不到放在那里、要么是tmp结尾的临时文件,后来将path改成如下代码,成功解决了这个问题
		String path = ServletActionContext.getServletContext().getRealPath("/upload");
		System.out.println(path);
		File file = new File(path);
		if (file.exists())
			file.mkdirs();
		try {
			// 工具类拷贝文件
			FileUtils.copyFile(myFile, new File(file, myFileFileName));
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("上传结束……");
		return "success";
	}

	public File getMyFile() {
		return myFile;
	}

	public void setMyFile(File myFile) {
		this.myFile = myFile;
	}

	public String getMyFileFileName() {
		return myFileFileName;
	}

	public void setMyFileFileName(String myFileFileName) {
		this.myFileFileName = myFileFileName;
	}

	public String getMyFileContentType() {
		return myFileContentType;
	}

	public void setMyFileContentType(String myFileContentType) {
		this.myFileContentType = myFileContentType;
	}

}
struts.xml的配置
 
 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="user" extends="struts-default">
		<interceptors >
		<action name="upfile"  class="com.action.UpFile"  method="upfile">
                        文件上传拦截器,可以设置文件大小的参数
			<interceptor-ref name="fileUpload" >
			<param name="maxmmSize">1024000</param>
			</interceptor-ref> 
                            启用默认的拦截器栈
			<interceptor-ref name="defaultStack" />
			<result name="success" >/upsuccess.jsp</result>
			<result name="error">/500.jsp</result>
		</action>
	</package>
</struts>    


 



猜你喜欢

转载自blog.csdn.net/qq_37150258/article/details/80673084