/* 文件上传的先决条件 * 1. 上传的表单必须以POST方式提交(method="post") * 2. 提交需要指定编码为: `multipart/form-data` (enctype="multipart/form-data`") * 3. 可以在xml配置文件中添加一个 name="input"的result, 便于错误信息回显 * 4. 如果下载的文件太大, 需要在xml配置文件中修改默认的文件的最大字节数, 如最大允许上传5M: * ``` * <constant name="struts.multipart.maxSize" value="5242880" /> * ``` */
1.上传的JSP页面中的代码:
//引入S标签
<!-- from表单 --> <s:fielderror fieldName="file"></s:fielderror> 错误信息提示 <s:form action="/fileupload" method="post" theme="simple" enctype="multipart/form-data"> <!-- 选择文件标签 --> <s:file name="file" /> <!-- submit按钮 --> <s:submit value="上传" /> </s:form>
2.具体Action类的操作:
public class FileUpLoadAction extends ActionSupport { private static final long serialVersionUID = 1L; //传过来的文件,file和jsp页面的[<s:fielderror fieldName="file"></s:fielderror>]fieldName一样 private File file; //传过来的文件名: private String fileFileName; //传过来的文件类型: private String fileContentType;
生成三个字段的getter,setter方法
//业务处理 public String execute() throws Exception { //获取到"/123"文件夹的路径 String path = ServletActionContext.getServletContext().getRealPath("/123"); //将文件类型进行"/"截取,得到最后一个元素[1],进行字符串拼接 //fileName=UUID.文件类型 String fileName=UUID.randomUUID().toString()+"."+fileContentType.split("/")[1]; //在"/123"中建一个名为fileName的文件 File files=new File(path,fileName); //将传过来的文件file拷贝到"/123"中名为fileName的文件中 FileUtils.copyFile(file, files); return NONE; }
3.struts.xml中的代码:
<struts> <!-- 服务器允许最大的上传字节大小 --> <constant name="struts.multipart.maxSize" value="5242880"></constant> <include file="struts-default.xml"></include> <package name="fileuploads" extends="struts-default"> <action name="fileupload" class="com.gxxy.filetransport.filedownload.FileUpLoadAction"> <interceptor-ref name="fileUpload"> <!-- 设置上传文件的字节大小,这个大小只能小于服务器允许的最大的上传字节大小 --> <param name="maximumSize">1048576</param> <!-- 设置允许上传的拓展名 --> <param name="allowedExtensions">png,jpg,txt</param> </interceptor-ref> <interceptor-ref name="defaultStack"/> <result name="input">/JSP/filetransport/fileupload.jsp</result> <result name="none">/JSP/filetransport/fileupload.jsp</result> </action> </package> </struts>