FormFiile实现的多个附件功能

今天上头不在,于是总结下做的一些东西.嘎嘎~
Form
  1. public class EmailForm  extends  ActionForm{                 
  2.     private   FormFile file;//附件,fileMap,value 是配合FormFile使用的   
  3.     private   Map    fileMap;   
  4.     private   Object  value; 
  5.   
  6.     public  EmailForm(){
         
         fileMap = new HashMap();  //构造函数里头初始化
        }
  7.     public FormFile getFile() {   
  8.         return file;   
  9.     }   
  10.     public void setFile(FormFile file) {   
  11.         this.file = file;   
  12.     }   
  13.   
  14.     public Map getFileMap() {   
  15.         return fileMap;   
  16.     }   
  17.     public void setFileMap(Map fileMap) {   
  18.         this.fileMap = fileMap;   
  19.     }   
  20.   
  21.     public void setValue(String attributeKey, Object attributeValue)   
  22.     {   
  23.         getFileMap().put(attributeKey, attributeValue);   
  24.     }   
  25.   
  26.     public Object getValue(String attributeKey)   
  27.     {   
  28.         Object keyValue = getFileMap().get(attributeKey);   
  29.   
  30.         return keyValue;   
  31.     }   
  32. }   

界面上的写法:file控件一定要写成这样~:

  1. <html:file property="value(file0'+upload_num+')" name="emailForm"/>  

具体实现的JS:

  1.   //添加附件   
  2. var upload_num=0   
  3. var card_type_handle;   
  4. var MAX_UPLOAD_NUMBER=8;   
  5. function add_upload()   
  6. {   
  7.  if (upload_num>=MAX_UPLOAD_NUMBER)   
  8. {   
  9.   alert('最多只能上传'+MAX_UPLOAD_NUMBER+'个文件');   
  10.   return ;   
  11. }   
  12. ++upload_num;   
  13. tr=document.all.tbl_upload.insertRow();   
  14. tr.insertCell().innerText="附件";   
  15. tr.style.backgroundColor='#ffffff';   
  16. str='
  17. tr.insertCell().innerHTML=str;   
  18. upload_num_view();   
  19. }   
  20. function delete_upload()   
  21. {   
  22. document.all.tbl_upload.deleteRow(window.event.srcElement.parentElement.parentElement.rowIndex);   
  23. upload_num--;   
  24. upload_num_view();   
  25. }   
  26. function upload_num_view()   
  27. {   
  28.   document.getElementById("upload_num_viewer").innerText=MAX_UPLOAD_NUMBER-upload_num;   
  29.   document.getElementById("acess").value=upload_num;   
  30. }  

html:两行布局:

  1. <tr>  
  2. <td colspan="7">  
  3. <input name="addAccessory" type="button" class="mybutton" style="cursor: hand;"    
  4. id="addAccessory" value="添加附件" onClick="add_upload();">  
  5. [提示:您能发送的邮件附件总容量最大为15M!(最多还能上传<span id='upload_num_viewer' style='color:red'>span><script>upload_num_view()script>  个)]   
  6. td>  
  7. tr>  
  8. <tr  id="accessory"><td colspan="7">  
  9. <table width="100%" border="0" id="tbl_upload">  
  10. table>    
  11. td>tr>  

 

java 代码:这里循环变量i的初始值为1,因为是邮件里头的附件处理
  1. // 附件处理   
  2.         String istr = request.getParameter("acess");   
  3.         if (istr != null) {   
  4.             for (int i = 1; i < Integer.parseInt(istr) + 1; i++) {   
  5.                 FormFile ffile = (FormFile) form.getValue("file0" + i);   
  6.                 String filename = ffile.getFileName();   
  7.                 filename = filename.substring(filename.lastIndexOf("\\") + 1);  
  8.                 try {  
  9.                     ByteArrayDataSource dataSource = new ByteArrayDataSource(  
  10.                             ffile.getInputStream(), null);  
  11.                     email.attach(dataSource, MimeUtility.encodeText(filename),  
  12.                             filename);  
  13.                 } catch (Exception e) {  
  14.                     System.out.println("附件处理错误:" + e);   
  15.                 }   
  16.             }   
  17.         }   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值