基于struts 的FormFile实现文件的上传功能
2009-11-11 20:32
746 查看
第一步:首先建个上传文件的简单的界面,代码如下:文件名(FileUpload.jsp)
第二步:建立一个ActionForm,代码如下:文件名(FileUploadForm.java)
第三步:创建Action,代码如下,文件名(FileUploadAction)
第四步:写strust的配置文件struts-config.xml,代码如下:
经过以上四步,开始运行,要是上传的文件名是中文会报异常的,为此加上过滤器。
第五步:加上过滤器:代码如下:
在web.xml中加上下面的代码
com.filter.GlobalFilter代码如下:
经过以上的五步,文件的上传功能就实现了。
<%@ page language="java" contentType="text/html; charset=UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>文件上传</title> <mce:script type="text/javascript"><!-- function apply(){ var f=document.getElementById("form1"); var file=document.getElementById("file"); if(file.value!=''){ f.submit(); }else{ alert('请选择要上传的文件'); return false; } } // --></mce:script> </head> <body> <form id="form1" action="/FileUpload.do" method="post" enctype="multipart/form-data"> <table align="center"> <tr><td> <input type="file" id="uploadFile" name="uploadFile" size="12" value=" "> <p> </td> </tr> <tr><td> <input onclick="apply();return false;" type="submit" value="上传文件"></td> </tr> </table> </form> </body> </html>
第二步:建立一个ActionForm,代码如下:文件名(FileUploadForm.java)
]package com.form; import org.apache.struts.action.ActionForm; import org.apache.struts.upload.FormFile; public class FileUploadForm extends ActionForm { private FormFile uploadFile; public FormFile getUploadFile() { return uploadFile; } public void setUploadFile(FormFile uploadFile) { this.uploadFile = uploadFile; } }
第三步:创建Action,代码如下,文件名(FileUploadAction)
]package com.action; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import com.form.FileUploadForm; public class FileUploadAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { FileUploadForm uploadForm=(FileUploadForm) form; FormFile uploadFile=uploadForm.getUploadFile(); //得到文件的名字 String fileName=uploadFile.getFileName(); //得到文件的大小 int fileSize=uploadFile.getFileSize(); //得到文件的输入流 InputStream is=uploadFile.getInputStream(); uploadFile(fileName,is); return mapping.findForward("index"); } /** * 上传文件 * @param fileName * @param is */ private void uploadFile(String fileName, InputStream is) { try { //设置上传文件要保存的路径 OutputStream os=new FileOutputStream("E:/save/"+fileName); //设置一个Buffer用来缓存数据 byte[] buffer=new byte[1024*1024]; int len; while((len=is.read(buffer))!=-1){ //将缓存的数据写到磁盘 os.write(buffer,0,len); } //关闭流 os.close(); is.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
第四步:写strust的配置文件struts-config.xml,代码如下:
]<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <form-beans> <form-bean name="upload" type="com.form.FileUploadForm" /> </form-beans> <action-mappings> <action path="/FileUpload" type="com.action.FileUploadAction" name="upload" /> </action-mappings> <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/> <message-resources parameter="resources.application" />
经过以上四步,开始运行,要是上传的文件名是中文会报异常的,为此加上过滤器。
第五步:加上过滤器:代码如下:
在web.xml中加上下面的代码
]<filter> <filter-name>GlobalFilter</filter-name> <filter-class>com.filter.GlobalFilter</filter-class> </filter> <filter-mapping> <filter-name>GlobalFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
com.filter.GlobalFilter代码如下:
]package com.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class GlobalFilter implements Filter{ public void init(FilterConfig filterConfig) throws ServletException{ System.out.println("===========in the filter=========="); } public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException{ try{ request.setCharacterEncoding("UTF-8"); chain.doFilter(request,response); }catch(Exception e){ e.printStackTrace(); } } public void destroy() { } }
经过以上的五步,文件的上传功能就实现了。
相关文章推荐
- 基于struts 的FormFile实现文件的上传功能
- 基于Struts FormFile上传文件
- 基于Struts FormFile上传文件
- 基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)
- 基于bootstrap的上传插件fileinput实现ajax异步上传功能(支持多文件上传预览拖拽)
- 基于Struts FormFile上传文件
- SSH,JSP用FormFile实现文件上传功能
- 基于Struts FormFile上传文件—(转载于陈毓哲老师的博客)
- 基于Struts文件上传(FormFile)详解
- Golang+Android基于HttpURLConnection实现的文件上传功能示例
- struts FormFile 上传文件
- 文件上传的实现 (马马 2001年09月28日 17:14) PHP同样支持上传文件的功能,但并不是所有支持PHP的网站都支持此功能,特别是免费的网站。 实现上传,首先要在HTML上加入上传文件的“<FORM>”表格。 <form me
- 基于Spring实现文件上传功能
- 使用ajaxfileupload.js实现上传文件功能
- Struts文件上传功能的实现
- ajax利用FormData、FileReader实现多文件上传php获取
- 利用struts1 formfile实现文件上传功能
- 基于SpringBoot上传任意文件功能的实现
- Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
- 基于Jquery插件实现跨域异步上传文件功能