(25) java web的struts2框架的使用-基于表单的文件上传

一,首先创建一个表单页面

<body>
	<form action="uploads" method="post" enctype="multipart/form-data">
		文件: <input type="file" name="uploadObject"> <input
			type="submit" value="提交">
	</form>
</body>

  

二,创建一个接受文件的Action处理上传的文件

public class FileUpload extends ActionSupport {

	private static final long serialVersionUID = 1L;

	/* 上传的文件,属性的名字和form表单中的name保持一致 */
	public File uploadObject;
	/* 获取上传文件的名字,名字的命名格式为 file 的文件名(上面)+“fileName” */
	public String uploadObjectFileName;
	/* 文件的类型名称,名字的命名格式为 file的文件名(上上面)+“ContentType” */
	public String uploadObjectContentType;

	public String execute() {

		System.out.println("fileName:" + uploadObjectFileName);
		System.out.println("contentType:" + uploadObjectContentType);
		System.out.println("File:" + uploadObject);

		// 获取要保存文件夹的物理路径(绝对路径)
		String realPath = ServletActionContext.getServletContext().getRealPath(
				"/upload");
		File file = new File(realPath);

		// 测试此抽象路径名表示的文件或目录是否存在。若不存在,创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
		if (!file.exists()) {
			file.mkdirs();
		}

		try {
			// 保存文件
			FileUtils.copyFile(uploadObject, new File(file,
					uploadObjectFileName));
		} catch (IOException e) {
			e.printStackTrace();
		}
		return SUCCESS;
	}
}

  

三,配置action

	<package name="upload" extends="struts-default">
    	
    	 <action name="uploads" class="gy.upload.FileUpload">

            <!-- 指定(限制)上传文件的类型,定义局部拦截器,修改默认拦截器的属性 
                "fileUpload.maximumSize" :限制上传最大的文件大小。 
                "fileUpload.allowedTypes":允许上传文件的类型。 
                "fileUpload.allowedExtensions":允许上传文件的可扩展文件类型。 -->
            <interceptor-ref name="defaultStack">
                <param name="fileUpload.maximumSize">500000000</param>
                <param name="fileUpload.allowedTypes">text/plain,application/vnd.ms-powerpoint</param>
                <param name="fileUpload.allowedExtensions">.txt,.ppt</param>
            </interceptor-ref>

            <result>/success.html</result>
            <!-- 出现错误自动会返回input结果,进入结果视图 -->
            <result name="input" >/fail.html</result>
        </action>
   
    </package> 

  

这样就搞定了。注释很重要

猜你喜欢

转载自www.cnblogs.com/yangzigege/p/9461431.html
今日推荐