我用的webwork框架。 我在作一个jsp页面,中页面中有写信息和上传图片。然后实现提交到数据库中。请问这个图片上传的功能怎么实现啊?

解决方案 »

  1.   

    <%@ page import="org.apache.commons.fileupload.*"%>
    <!--文件上传的包在的资源里--><FORM   action="../QU_BJDWH/SendEmail.jsp" enctype="multipart/form-data"  method="post" name="form1"  id="form1" onSubmit="return checkonsubmit()" >
          <input type="hidden" id="state" name="state" value="yy"> 
     <div>
    <table border="0" cellpadding="3" cellspacing="0" align="center"><tr>
        
        <td >
            <nmttag:label  id="BAS_BJDYJ.lbl_operation_center" value="QU_BJDSDEM.ReceiveEmail" />  
        </td>
        <td >      
            <nmttag:text   id="QU_BJDSDEM.ReceiveEmail" width="<%=new Integer(410)%>" value="<%= resieve%>" />&nbsp;*
        </td>  
    </tr><tr>
        <td>
            <nmttag:label  id="BAS_BJDYJ.lbl_operation_center" value="QU_BJDSDEM.CCEmail" />   
            </td>
            <td>
            <nmttag:text   id="QU_BJDSDEM.SendEmailMan" width="<%=new Integer(410)%>" value="<%= sende%>" />&nbsp;
        </td>  
    </tr><tr>
        <td>
            <nmttag:label  id="BAS_BJDYJ.lbl_email_title" value="BAS_BJDYJ.lbl_email_title" />
        </td>
        <td>
            <nmttag:text  id="BAS_BJDYJ.txtEmail_title" value="<%=titles %>" width="<%=new Integer(410)%>" fieldLength="<%=new Integer(100)%>"/>&nbsp;
        </td>
    </tr></table>
    <div align="center"></div>
    <table border="0" cellpadding="3" cellspacing="0" align="center">
    <tr>
        <td>
            <nmttag:label  id="BAS_BJDYJ.lbl_email_content" value="BAS_BJDYJ.lbl_email_content" />
        </td>
         <td >
            &nbsp;<nmttag:textarea   id="BAS_BJDYJ.txtEmail_content" value="<%= content%>" cols="<%= new Long(65)%>" rows="<%= new Long(8)%>" fieldLength="<%=new Integer(400)%>"/>&nbsp;
        </td>
    </tr>
    <tr>
             <td>
                 <nmttag:label  id="BAS_BJDYJ.lbl_email_title" value="QU_BJDSDEM.Annex" />
            </td>
            <td>      
            
            <nmttag:label  id="BAS_BJDYJ.lbl_email_title" value="<%= resultshowreportname.toString()%>" />
          
           </td>  
    </tr><tr>
             <td>
             
            </td>
            <td>
               <script type="text/javascript">Attachment(10);</script>
           </td>  
    </tr>
    </table>
    </div>
     <div align="center">
         <input type="submit" name="Submit" value="<%=MLUtils.getResourceString("QU_BJDSDEM.lblSend")%> ">  
    </div>
        
       </FORM>   在jsp中注意form的属性[enctype="multipart/form-data"]
        request.getSession().removeAttribute("state");
        String uploadPath =sm.getEmailConfig("uploadPath"); 
        File testdir = new File(uploadPath); //为了保证目录存在,如果没有则新建该目录
        if (!testdir.exists()) {
        testdir.mkdirs();
        }
        DiskFileUpload fu = new DiskFileUpload(); 
        // 设置最大文件尺寸,这里是4MB            
        fu.setSizeMax(50194304);            
        // 设置缓冲区大小,这里是50kb            
        fu.setSizeThreshold(14096);            
        // 得到所有的文件:            
        List fileItems = fu.parseRequest(request);    
        FileItem file_item;
        for(int   i=0;i<fileItems.size();i++)
        {
               file_item=(FileItem)fileItems.get(i); 
        
          
        }  
            
        Iterator i = fileItems.iterator();            
        // 依次处理每一个文件:
        String   EmailTitle=null;
        String   Emailcctem=null; 
        
        List   ToEmaillist=new ArrayList();  
        List   ToCCEmail=new ArrayList();  
        
        List  Urllist =new ArrayList();
        while (i.hasNext()) {    
           
        FileItem fi = (FileItem) i.next();    
        // 检查当前的项目是普通的表单元素,还是一个上载的文件        
        if (fi.isFormField()) {                    
        // 获得表单域的名字        
       
          if (fi.getFieldName().equals("QU_BJDSDEM.ReceiveEmail"))
          {
          
                  String   ToEmail =fi.getString();
                   String[]  tt = st.split(ToEmail,";");
                   for(int j=0;j<tt.length;j++)
                   {
                       ToEmaillist.add(tt[j]);
                   }
                   
      
              // System.out.println("ToEmail  is ["+ToEmail+"]");
          }
          if (fi.getFieldName().equals("QU_BJDSDEM.SendEmailMan"))
          {
                  String   CCEmail =fi.getString();                 
                  if(CCEmail!=null &&  !"".equals(CCEmail))
         {
                   String[]  cc = st.split(CCEmail,";");
                   for(int h=0;h<cc.length;h++)
                   {
                   ToCCEmail.add(cc[h]); 
                    }
     
       }else
      {
       ToCCEmail.add(""); 
    }            

          }
          if (fi.getFieldName().equals("BAS_BJDYJ.txtEmail_title"))
          {
                     EmailTitle =fi.getString("UTF-8");
                     //String vl= ch.getstring(EmailTitle);
               // System.out.println("EmailTitle  is ["+vl+"]");
          }   
           if (fi.getFieldName().equals("BAS_BJDYJ.txtEmail_content"))
          {
                     Emailcctem =fi.getString("UTF-8");
                //  System.out.println("Emailcctem  is ["+Emailcctem+"]");
          }  
            
                    
        String fieldName = fi.getFieldName();        
        }                
        // 获得文件名,这个文件名包括路径:        
        String fileName = fi.getName();        
        if (!(fileName == null)) {        
        // 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
        
        String uploadFileName = fileName.substring(fileName.trim().lastIndexOf("\\") + 1);   



    //File   GetSizeFile= new File(uploadPath+uploadFileName);
    //System.out.println(uploadPath+uploadFileName);
        Urllist.add(uploadPath+uploadFileName);
       
    /*FileSize =FileSize+GetSizeFile.length(); */
        fi.write(new File(uploadPath + uploadFileName));    
        pathlist.add(uploadPath+uploadFileName);  
     
        }        
        }
    if(Urllist.size()>0)
    {
    for(int   h=0;h<Urllist.size();h++)
    {
           File   GetSizeFile= new File(Urllist.get(h).toString());
    //System.out.println(uploadPath+uploadFileName);    
    FileSize =FileSize+GetSizeFile.length();
    }
    }
    实现上传的sourse希望能对你有所帮助