基于Struts FormFile上传文件—(转载于陈毓哲老师的博客)

    技术2022-05-20  40

    源地址:http://www.oneedu.cn/xxyd/rjgc/200801/23560.html

    有关文件上传的控件可能非常多,比如有用于学习的SmartUpload、性能非常好的COS组件、有Apache的FileUpload组件、有Struts的FormFile组件、有Spring上传文件,还有其他一些开发的控件等等。假如你是用Struts,那基于Struts FormFile组件应该是一个不错的选择。      Struts FormFile跟Struts ActionForm结合得非常好,使用起来也非常简单,但是,对于同时上传多个附件,那就有点麻烦了!不管怎么样,它还是一个好东西,关键看大家怎么看待他了!      第一步,我们创建一个新的Struts工程,创建一个FileUploadForm,FileUploadForm如下所示:

    程序代码 package zizz .struts ; import org .apache .struts .action .ActionForm ; import org .apache .struts .upload .FormFile ; /*** 基于Struts FormFile的文件上传.* @author chen yuzhe**/ public class FileUploadForm extends ActionForm {           /**     * serialVersionUID     */      private static final long serialVersionUID = -7794872310588861856L ;           /**     * 上传的文件      */      private FormFile uploadFile ;      public FormFile getUploadFile ( ) {          return uploadFile ;      }      public void setUploadFile (FormFile uploadFile ) {          this .uploadFile = uploadFile ;      }      }

          第二步,创建一个Action,用于处理上传的文件及保存在服务器的路径,FileUploadAction文件内容如下

    程序代码 package zizz .struts ; 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 ; /*** 文件上传的Action,该类用于处理FormFile及将上传的文件保存到磁盘的指定位置.* @author ZIZZ** @Create-Time:2007-12-26 下午03:35:37*/ public class FileUploadAction extends Action {           /**     * 上传的文件保存在服务器的路径     */      private static String UPLOAD_FILE_PATH = "c:/income/" ;     @Override      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 ( ) ;         System .out .println ( "FileName = " + fileName ) ;         System .out .println ( "FileSize=" + fileSize ) ;         boolean result = true ;          try {              //得到文件的输入流             InputStream is = uploadFile .getInputStream ( ) ;              //上传文件             uploadFile (fileName ,is ) ;          } catch (IOException ex ) {             ex .printStackTrace ( ) ;              //假如上传文件失败,设置一个失败的标记位             result = false ;          }          if (result ) {              return mapping .findForward ( "success" ) ;          } else {              return mapping .findForward ( "fail" ) ;          }              }           /**     * 上传文件     * @param fileName     * @param is     * @throws IOException     */      private void uploadFile (String fileName ,InputStream is ) throws IOException {         OutputStream os = new FileOutputStream (UPLOAD_FILE_PATH + fileName ) ;          //8k缓存数据         byte [ ] buffer = new byte [1024 * 8 ] ;          //设置读进缓存的字节数          int len ;          while ( (len =is .read (buffer ) ) ! = -1 ) {              //将缓存数据写入磁盘             os .write (buffer ,0 ,len ) ;          }          //关闭输出流         os .close ( ) ;          //关闭输入流         is .close ( ) ;      } }

         第三步,编写文件上传的jsp文件

    程序代码 <%@ page language = "java" contentType = "text/html; charset=GBK"% > <%@ taglib uri = "http://struts.apache.org/tags-html" prefix = "html" % > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > <html >    <head >           <title >文件上传表单 < /title >      <meta http-equiv = "pragma" content = "no-cache" >      <meta http-equiv = "cache-control" content = "no-cache" >      <meta http-equiv = "expires" content = "0" >          <meta http-equiv = "keywords" content = "keyword1,keyword2,keyword3" >      <meta http-equiv = "description" content = "This is my page" >    < /head >       <body >      <html:form action = "/upload" enctype = "multipart/form-data" >         上传文件: <html:file property = "uploadFile" > < /html:file >          <html:submit value = "上传文件" > < /html:submit >      < /html:form >    < /body > < /html >

          第四步,配置struts-config.xml文件

    程序代码 < ?xml version = "1.0" encoding = "UTF-8" ? > <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd" > <struts-config >    <data-sources / >    <form-beans >        <form-bean name = "fileUploadForm" type = "zizz.struts.FileUploadForm" > < /form-bean >    < /form-beans >    <global-exceptions / >    <global-forwards / >    <action-mappings >        <action path = "/upload" name = "fileUploadForm" scope = "request" type = "zizz.struts.FileUploadAction" >            <forward name = "success" path = "/success.jsp" redirect = "true" > < /forward >            <forward name = "fail" path = "/fail.jsp" redirect = "true" > < /forward >        < /action >    < /action-mappings >    <message-resources parameter = "zizz.struts.ApplicationResources" / > < /struts-config >

          第五步,发布应用系统,检查测试结果


    最新回复(0)