动态多附件上传
----
经典解决方案
动态多附件上传,在目前的
B/S
系统中经常会遇到这方面的需求,基于开源的理念,在此我把几个解决方案做详细的介绍。目的在于提高自己的描述问题的能力,同时给遇到同样问题的朋友提供一些线索,以便节省宝贵时间。
上次项目是做一个
**
管理系统,其中有一个模块是作品发布,作品发布模块就需要实现这样一个功能:
新建一个作品,作品包含一些基本的信息,而且要求要有一个或多个附件,每个附件又要求有作品概要(即作品附件和作品概要一一对应)。
系统要求用
struts
来实现。
在讨论解决方案之前,首先要了解的是。在客户端请求服务器时提交表单,表单的内容只能为
String
型和
FormFile
型(
FormFile
类型只有在
Struts
中才有),不能提交自己定义的
dto
对象。但是可以提交自己定义的
dto
中的
String
成员和
FormFile
成员。
了解了这个原理之后,我开始阐述第一种解决方案;
第一种解决方案:间接动态多附件上传
基本思路:
定义一个
ProductForm
类
Class
ProductForm extends
ActionForm{
String
pro_name;
…….
//
其他一些基本的成员变量;
//
生成
get
和
set
方法;
}
在
jsp
页面上用相关的标签定义作品的字段;
如:
<html:text property=”pro_name” />
动态多附件则用普通标签实现,没有在
ProductForm
中定义相应的字段。因此,
Action
取值也不能直接从
ActionForm
中取值,因为
ActionForm
中根本没有相应的成员。
这里给出相关代码:
Jsp
部分:
<
TABLE
id
=
'mytable'
>
<
tr
><
td
>
</
td
>
</
tr
>
</
TABLE
>
<
html:button
value
=
"
添加新附件
"
styleClass
=
"btn"
onclick
=
"add_Row(mytable);"
property
=
"add_newFile"
/>
动态添加附件域在
jsp
中的代码是:
var
i = 0;
function
add_Row(the_table)
{
//
动态
增加一行,
实际
上也就是增加一个表格
var
the_row,the_cell;
var
cur_rows=the_table.rows.length;
the_row=cur_rows==
null
?-1:(cur_rows);
//
var
i=the_row;
var
newrow=the_table.insertRow(i);
//
得到插入位置
newrow.id = i;
the_cell=newrow.insertCell(0);
the_cell.innerHTML=
"<table width='359' border='0' cellspacing='0' id='table'>"
+
"<tr>"
+
"<td width='300'><input id='
<%=
Constants.RES_NEW_FILE_PARAMETER_NAME
%>
"
+i+
"' name='
<%=
Constants.RES_NEW_FILE_PARAMETER_NAME
%>
"
+i+
"' type='file'
onchange='fileTypeCheck(this);'
onpaste='return
false'
onkeypress='return
false'
onkeydown='return
false' oncontextmenu='return
false;'></td>"
+
"<td width='55'><input name='deleteRow' type='button' class='btn' value='
删
除此域
' onclick='del("
+i+
");'></td>"
+
"</tr>"
+
"<tr>"
+
"<td ><span class='useBB'>
文件概要
说
明
[<=50
汉
字
]</span></td>"
+
"<td class='style6'> </td>"
+
"</tr>"
+
"<tr>"
+
"<td>"
+
"<textarea
name='"
+i+
"' class='new_files_comnt' onchange='checkLength(this,100);'></textarea></td>"
+
"<td align='left' valign='top'> "
Courier;
分享到:
相关推荐
在一个form表单里同时上传多个文件和文本信息的解决方案
【数据库缓存】【数据库缓存】【服务器的集群化,以及负载均衡】
基于.net平台,c#语言实现附件上传,适合初学者,附件上传得简单实现,附解决方案!
uni-app系统目录文件上传(非只图片和视频)解决方案 永中云服务 1.0.1新版本已经发布〜 新版本基于永中云服务-云预览,完善并实现了跨平台H5文件(非只图片和视频)上传,。 参考技术文档 背景 公司领导提出这样的...
该NWT7基于DL1ALT开发,NWT7 天线分析仪电路板上集成了对数探头和可调节消音器。分析仪是PC计算机的适配器,用于控制和可视化测量过程。通过USB端口进行通信。NWT7 天线分析仪特性: ...附件资料截图:
我们以精益求精的态度,追求卓越品质,为中小网站用户提供一套完美的迅速建站解决方案,我们在开发过程中无处不充分考虑用户的使用习惯,尽最大可能降低用户的使用门槛,让用户关注于内容维护本身,而不需要投入过多...
目前的解决方案是 通过配置execl的格式,在后台通过java反射机制动态生成导出对象的方式实现。 上传了源代码,但是不包含使用到的jar文件和公司封装的工具类。 注:如果有什么更好的方案请联系 zzhsnow@21...
FTP Serv-U是现在市场上功能最强大,使用最简单的FTP服务器软件之一,可以应用于Internet范围内文件共享的解决方案。你现在就可以建立你自己 的FTP服务器了。 FTP Serv-U , 一个最多人使用的 FTP 架站软件,想要架...
用友U8电子数电票及电子会计档案解决方案,适用用U8的所有客户,解决进项和销项发票的上传(文件上传、文件夹上传)、导入、删除,自动识别发票、查重、验真,可以根据发票生成凭证、联查凭证、关联凭证、查看附件、...
小编之前也介绍了许多ASP.NET文件上传的解决案例,今天来个asp.net文件上传大集合。 1 使用标准HTML来进行图片上传 前台代码: <body> <form id=form1 runat=server> 使用标准HTML来进行...
FTP Serv-U是现在市场上功能最强大,使用最简单的FTP服务器软件之一,可以应用于Internet范围内文件共享的解决方案。你现在就可以建立你自己 的FTP服务器了。 FTP Serv-U , 一个最多人使用的 FTP 架站软件,想要架...
解决方案: 1.如果非要部署wordpress到Windows XP系统,更换Windows XP English version 2.如果非要部署wordpress到Windows XP 中文版,修改以下代码: //wp-admin/includes/file.php,以3.0.3为例: 复制代码代码...
企业网盘,网盘,公司网盘,公司云盘,文件管理系统,文档管理系统,校园云盘,校园网盘,教育云盘,教育网盘,私有云存储解决方案 #Fly.Box 2.1.0 更新: 1. 增加功能:网页收藏 2. 增加功能:统计 3. 增加功能:...
该电池充电设计方案资料已经上传,详见链接:(https://www.cirmall.com/circuit/4353/) DC-DC转换器的恒流源控制工作原理: (图一)为一个恒流控制应用的基本要求电流控制配置。误差放大器比较反馈电压和分流电阻...
FTP Serv-U是现在市场上功能最强大,使用最简单的FTP服务器软件之一,可以应用于Internet范围内文件共享的解决方案。你现在就可以建立你自己的FTP服务器了。 FTP Serv-U , 一个最多人使用的 FTP 架站软件,想要架一...
这些逻辑应用程序可与提供的附件管理解决方案一起使用。 将CRM注释附件移到Azure Blob 将CRM电子邮件附件移动到Azure Blob 注意:如果CRM版本是9.0及更高版本,请执行以下操作 成功部署后,打开Logic App(LA-...
主要介绍了详解Nginx 13: Permission denied 解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
要浏览上传附件,我们通过<input type=”file”>元素,但是一定要注意必须设置form的enctype属性为”multipart/form-data”: <form method=”post” action=”upload.asp” enctype=”multipart/form-data...
QC2.0 电源快充解决方案功能概述: 自制QC2.0车充,方案FP6600+3R33,能够成功识别5V、9V、12V快充模式,STC12C5A60S2检测总输入电压、温度与各USB输出电流电压,ADC采样,采样通道CD4052切换;温度用18B20; 0.96寸...