初识Struts(七)----Struts文件上传

<!----><!----><!----> <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1318531534; mso-list-type:hybrid; mso-list-template-ids:1234214414 225203862 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-text:%1、; mso-level-tab-stop:18.0pt; mso-level-number-position:left; margin-left:18.0pt; text-indent:-18.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} --> <!---->

 

 

采用 Struts 可以很方便的实现文件上传工作

 

<!---->1、 <!---->上传的页面, upload.jsp

   <li>测试struts文件上传</li><br>
   <form action="upload.do" method="post" enctype="multipart/form-data">
        文件名:<input type="text" name="title"><br>
        文件:<input type="file" name="myfile"><br>
        <input type="submit" value="上传">
   </form>

enctype="multipart/form-data" 就是把你表单的所有信息以流方式提交,页面上的所有信息已经都转换为了文件流,为的是能让服务端得到你上传的文件的文件流。 文件项的 type 必须为 file

 

2 、建立 ActionForm( 注意:必须要用 FormFile 来接收上传的文件 ) UploadActionForm.java

package cn.huan.struts;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

/**
 * 文件上传ActionForm
 * @author 刘银环
 *
 */
public class UploadActionForm extends ActionForm {
	//文件名
	private String title;
	
	//必须要用FormFile
	private FormFile myfile;

	/**
	 * @return the title
	 */
	public String getTitle() {
		return title;
	}

	/**
	 * @param title the title to set
	 */
	public void setTitle(String title) {
		this.title = title;
	}

	/**
	 * @return the myfile
	 */
	public FormFile getMyfile() {
		return myfile;
	}

	/**
	 * @param myfile the myfile to set
	 */
	public void setMyfile(FormFile myfile) {
		this.myfile = myfile;
	}

}

 

3 Action 中调用 FormFile 中的数据,采用流输出, UploadTestAction.java

package cn.huan.struts;

import java.io.FileOutputStream;

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.action.DynaActionForm;
import org.apache.struts.upload.FormFile;

/**
 * 文件上传Action
 * @author 刘银环
 *
 */
public class UploadTestAction extends Action {

	/* (non-Javadoc)
	 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		UploadActionForm uaf = (UploadActionForm) form;
		String title = uaf.getTitle();
		FormFile myFile = uaf.getMyfile();
		
		FileOutputStream fos = new FileOutputStream("G:\\" + myFile.getFileName());
		fos.write(myFile.getFileData());
		fos.flush();
		fos.close();
		
		return mapping.findForward("success");
	}

}
 

4 、将 ActionForm Action 配到 struts-config.xml 文件中:

<struts-config>

      <form-beans>
        <form-bean name="uploadForm" type="cn.huan.struts.UploadActionForm"/>
      </form-beans>

      <action-mappings>  
         <action path="/upload"
                 type="cn.huan.struts.UploadTestAction"
                 name="uploadForm"
                 scope="request"
         >
           <forward name="success" path="/upload_success.jsp"/>
         </action>
      </action-mappings>
</struts-config>
 

 

5 、还可在 struts-config.xml 文件中配置上传的参数,如设置上传的文件大小最大为 50M

  <controller maxFileSize="50M"/>

 

到此, struts 文件上传工程建立完毕。

 

另:上面的 ActionForm 当然也可以采用 DynaActionForm 来完成,从而不用建 ActionForm 类, UploadTestAction 中相应代码改为:

		DynaActionForm daf = (DynaActionForm) form;
		String title = daf.getString("title");
		FormFile myFile = (FormFile) daf.get("myfile");
		System.out.println("Title:"+title);
		
		FileOutputStream fos = new FileOutputStream("G:\\" + myFile.getFileName());
		fos.write(myFile.getFileData());
		fos.flush();
		fos.close();
		
		return mapping.findForward("success");

struts-config.xml 文件中关于 ActionForm Action 的配置相应改为:

<struts-config>

      <form-beans>
        <!--  DynaActionForm for the upload -->
        <form-bean name="dynaForm2" type="org.apache.struts.action.DynaActionForm">
               <form-property name="title" type="java.lang.String"/>
               <form-property name="myfile" type="org.apache.struts.upload.FormFile"/>
        </form-bean>
      </form-beans>

      <action-mappings>
         <action path="/upload"
                 type="cn.huan.struts.UploadTestAction"
                 name="dynaForm2"
                 scope="request"
         >
           <forward name="success" path="/upload_success.jsp"/>
         </action>
      </action-mappings>
      
      <controller maxFileSize="50M"/>
</struts-config>

 。。。。。。。。。

你可能感兴趣的:(apache,bean,jsp,servlet,struts)