一,首先创建一个表单页面
<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>
这样就搞定了。注释很重要
原文地址:https://www.cnblogs.com/yangzigege/p/9461431.html
时间: 2024-10-10 08:20:13