问题描述
前台:<form action="upload.action" method="post" enctype="multipart/form-data"><table><td><input name='name_1' value='1'><input type=file name='upload'></td><td><input name='name_2' value='2'><input type=file name='upload'></td>...<td><input name='name_i' value='i'><input type=file name='upload'></td></table></form>后台:action里面用private List<File> upload;private List<String> uploadContentType;private List<String> uploadFileName;可以接受到文件,但是不知道多文件和行的对应关键啊,比如第2行上传一个文件,第四行上传一个文件,其他行无文件,这不是乱了么。。。有心把文件域的name改为upload1,upload2等,但是struts直接给整成文件了,到哪去找文件域的name
解决方案
骚年,看来你没仔细看demo给你代码,你一看就懂了 <form> <input type=file name=upload[0] /> <input type=file name=upload[1] /> <input type=file name=upload[2] /> </form>List<File> upload懂了吧
解决方案二:
楼主可能对struts文件上传的机制不太理解,解决办法是只要你jsp里的input标签的name属性的值都是upload就可以,后台action你是可以用数组或者list都行.至于有些是空的,是不会有影响的
解决方案三:
1.你可做成动态添加行啊,例如,开始只显示一个输入框,如果用户想要继续上传文件,可以点击一个按钮增加一行,这样就不会出现第2行上传一个文件,第四行上传一个文件,其他行无文件。2.或者考虑使用其他上传组件,如sufupload,这个组件可以实现多文件上传,并且可以显示上传进度,能够给用户很好的体验
解决方案四:
我建议楼主用js在client端做点文章,在表单提交前做处理,将没有上传行对应的名字元素也remove掉,传给server的数据保证是名-数据 一一对应的。