zoukankan      html  css  js  c++  java
  • struts上传文件(图片)

    struts上传文件

      1:Html代码

    <%@ page contentType="text/html;charset=GBK" language="java" %> 

    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>  
     
    <html>  
    <head>  
    <title>一个上传文件的例子</title>  
    </head>  
    <BODY>  
    <h1>一个上传文件的例子</h1>  
    <html:errors/><br>  
    <html:form action="uploadfile.do" enctype="multipart/form-data">  
        <html:file property="file" /><br><br>  
        <html:submit></html:submit>  
    </html:form>  
    </BODY> 

    </html> 

      这里必须注意:<html:form>标签元素中必须加上 enctype="multipart/form-data"这个属性,否则会报出参数不匹配的错误。即使将这个struts标签换成HTML的<form />标签,也还是要加上这个属性。同时,method属性值必须为post,否则也会报错。

      2:sucess.jsp代码

      Html代码

    <%@ page contentType="text/html;charset=GBK" language="java" %>  
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>  
      
    <html>  
    <h1>上传成功...</h1><html:link forward="index">返回</html:link>  
    </html> 

      3:ActionForm类代码:UploadFileForm.java

    Java代码
    //Created by MyEclipse Struts   
    // XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.0.0/xslt/JavaClass.xsl   
      
    package testfile.forms;   
      
    import javax.servlet.http.HttpServletRequest;   
      
    import org.apache.struts.action.ActionErrors;   
    import org.apache.struts.action.ActionForm;   
    import org.apache.struts.action.ActionMapping;   
    import org.apache.struts.action.ActionError;   
      
    import org.apache.struts.upload.FormFile;   
    import org.apache.struts.upload.MultipartRequestHandler;   
      
    /**   
    * MyEclipse Struts  
    * Creation date: 11-14-2005  
    *   
    * XDoclet definition:  
    * @struts.form name="uploadForm"  
    */  
    public class UploadFileForm extends ActionForm {   
      
    private FormFile file=null;   
    //private String fname;   
    //private String size;   
    //private String url;   
      
    public FormFile getFile(){   
        return file;   
    }   
    public void setFile(FormFile file){   
        this.file=file;   
    }   
    //**************验证文件如果为空则返回*****************   
    public ActionErrors validate(   
        ActionMapping mapping,   
        HttpServletRequest request) {   
      
        ActionErrors errors=new ActionErrors();   
      
        if(file==null || file.getFileSize()<5 || file.getFileName()==null){   
         errors.add("file",new ActionError("error.file.null"));   
        }   
      
        return errors;   
    }   
      
      
    public void reset(ActionMapping mapping, HttpServletRequest request) {  
    }    

      4:Action类中的代码:UploadFileAction.java

      Java代码

    //Created by MyEclipse Struts   
    // XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.0.0/xslt/JavaClass.xsl   
      
    package testfile.actions;   
      
    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 org.apache.struts.action.ActionErrors;   
    import org.apache.struts.action.ActionError;   
    import org.apache.struts.upload.*;   
    import testfile.forms.*;   
    import java.io.*;   
      
    /**   
    * MyEclipse Struts  
    * Creation date: 11-14-2005  
    *   
    * XDoclet definition:  
    * @struts.action validate="true"  
    */  
    public class UploadFileAction extends Action{   
      
      
    public ActionForward execute (   
        ActionMapping mapping,   
        ActionForm form,   
        HttpServletRequest request,   
        HttpServletResponse response) throws Exception{   
      
        ActionErrors errors=new ActionErrors();   
      
        UploadFileForm hff=(UploadFileForm)form;   
        FormFile file=hff.getFile();   
      
      
        //*************如果ActionForm中没验证则加上这段*****************   
        //if(file==null || file.getFileSize()<10 || file.getFileName()==null){   
        // errors.add("file",new ActionError("error.file.null"));   
        // saveErrors(request,errors);   
        // return (new ActionForward(mapping.getInput()));   
        //}   
      
              //*************取得上传文件的信息****************   
        String dir=servlet.getServletContext().getRealPath("/upload");   
        String fname=file.getFileName();   
        String size=Integer.toString(file.getFileSize())+"bytes";   
        String url=dir+"\\"+fname;   
      
        //*************限制非图片文件的上传*******************   
        String fileType=(fname.substring(fname.lastIndexOf('.')+1)).toLowerCase();   
        if((!fileType.equals("jpg")) && (!fileType.equals("bmp")) && (!fileType.equals("gif")) && (!fileType.equals("jpeg"))){   
         errors.add("filetype",new ActionError("error.file.type"));   
         saveErrors(request,errors);   
         return (new ActionForward(mapping.getInput()));   
        }   
      
        //*************限制文件不能超过2M******************   
        if(file.getFileSize()>2097152){   
         errors.add("size",new ActionError("error.file.size"));   
         saveErrors(request,errors);   
         return (new ActionForward(mapping.getInput()));   
        }   
          
        //*************要用到的输入输出流*****************   
        InputStream streamIn=file.getInputStream();   
        OutputStream streamOut=new FileOutputStream(url);   
      
        //*************将文件输出到目标文件*****************   
        int bytesRead=0;   
        byte[] buffer=new byte[8192];   
        while((bytesRead=streamIn.read(buffer,0,8192))!=-1){   
         streamOut.write(buffer,0,bytesRead);   
        }   
      
        streamOut.close();   
        streamIn.close();   
        file.destroy();      
          
        return mapping.findForward("sucess");   
    }   
      

      5:properties文件内容:

      Xml代码

    error.file.size=The file is too large,the size must less than 2M !    
    error.file.null=Please choose the file!    
    error.file.type=Type of the file must be ".jpg" or ".jpeg" or ".bmp" or ".gif" !   

      6:struts-config.xml代码
      

    <?xml version="1.0" encoding="UTF-8"?>  
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"   
      
    "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">  
      
    <struts-config>  
      
        <form-beans >  
          <form-bean name="uploadForm" type="testfile.forms.UploadFileForm" />  
      
        </form-beans>  
        <global-forwards>  
          <forward name="sucess" path="/sucess.jsp" />  
          <forward name="index" path="/uploadfile.jsp" />  
        </global-forwards>  
        <action-mappings >  
          <action path="/uploadfile"   
            name="uploadForm"  
            scope="request"  
            input="/uploadfile.jsp"  
            type="testfile.actions.UploadFileAction" />  
      
        </action-mappings>  
      
        <message-resources parameter="com.yourcompany.struts.ApplicationResources" />  
    </struts-config> 

      7:web.xml代码

      Xml代码

    <?xml version="1.0" encoding="UTF-8"?>  
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">  
      
    <web-app>  
        <servlet>  
          <servlet-name>action</servlet-name>  
          <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>  
          <init-param>  
            <param-name>config</param-name>  
            <param-value>/WEB-INF/struts-config.xml</param-value>  
          </init-param>  
          <init-param>  
            <param-name>debug</param-name>  
            <param-value>3</param-value>  
          </init-param>  
          <init-param>  
            <param-name>detail</param-name>  
            <param-value>3</param-value>  
          </init-param>  
          <load-on-startup>0</load-on-startup>  
        </servlet>  
      
        <servlet-mapping>  
          <servlet-name>action</servlet-name>  
          <url-pattern>*.do</url-pattern>  
        </servlet-mapping>  
      
        <welcome-file-list>  
         <welcome-file>uploadfile.jsp</welcome-file>  
        </welcome-file-list>  
      
        <taglib>  
         <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>  
         <taglib-location>/WEB-INF/struts-html.tld</taglib-location>  
        </taglib>  
    </web-app>

  • 相关阅读:
    [转]PublishingFeatureHandler(发布功能参数)
    抽象类与接口使用的MSDN建议
    [转]SharePoint内容定制之XSLT高级用法——使用Muenchian方法分组XML数据
    MOSS中的DelegateControl机制
    [转]SharePoint内容定制之XSLT高级用法——带返回值的函数调用
    问题:加了访问权限也无法访问网站。
    [转]Writing Custom Entries to the Audit Log in Windows SharePoint Services 3.0(如何记录自定义审核日志)
    .NET使用C#连接TIBCO的JMS消息服务
    [转]SharePoint 2007 and 2010 Farm ports – configuring firewall(如何配置服务器场中的防火墙)
    [转] SharePoint Features elements, scope and other info
  • 原文地址:https://www.cnblogs.com/pricks/p/1499560.html
Copyright © 2011-2022 走看看