FormFiile实现的多个附件功能

本文介绍了一种使用Struts框架进行附件上传的方法。通过定制`EmailForm`类继承`ActionForm`来处理文件上传,并利用前端JavaScript实现了附件数量控制及动态添加删除功能。
今天上头不在,于是总结下做的一些东西.嘎嘎~
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.         }   
多角色体系 支持管理员、商家、消费者三种角色,权限分级管控: 管理员:负责平台整体配置、用户审核、数据监控等全局操作。 商家:管理店铺信息、发布商品、处理订单、回复评价等。 消费者:浏览商品、加入购物车、下单支付、评价商品等。 实现用户注册(手机号 / 邮箱验证)、登录(支持密码 / 验证码 / 第三方登录)、个人信息管理(头像、收货地址、密码修改)。 权限精细化控制 商家仅能管理自家店铺及商品,消费者仅能查看和购买商品,管理员拥有全平台数据访问权限。 二、商品管理功能 商品信息维护 商家可发布商品:填写名称、分类(如服饰、电子产品)、子类别(如手机、笔记本)、规格(尺寸、颜色、型号)、价格、库存、详情描述(图文)、物流信息(运费、发货地)等。 支持商品上下架、库存调整、信息编辑,系统自动记录商品状态变更日志。 商品分类与搜索 按多级分类展示商品(如 “数码产品→手机→智能手机”),支持自定义分类体系。 提供智能搜索功能:按关键词(名称、品牌)搜索,支持模糊匹配和搜索联想;结合用户浏览历史对搜索结果排序(优先展示高相关度商品)。 商品推荐 基于用户浏览、收藏、购买记录,推荐相似商品(如 “浏览过该商品的用户还买了…”)。 首页展示热门商品(销量 TOP10)、新品上架、限时折扣等推荐列表。 三、订单与交易管理 购物车与下单 消费者可将商品加入购物车,支持修改数量、选择规格、移除商品,系统自动计算总价(含运费、折扣)。 下单流程:确认收货地址→选择支付方式(在线支付、货到付款)→提交订单→系统生成唯一订单号。 订单处理流程 订单状态跟踪:待支付→已支付→商家发货→物流运输→消费者收货→订单完成,各状态变更实时通知用户。 商家端功能:查看新订单提醒、确认发货(填写物流单号)、处理退款申请(需审核理由)。 消费者端功能:查看订单详情、追踪物流、申请退款 / 退货、确认收货。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值