基于Struts2的通用文件上传实现(二)
四、Action配置
<action name="attachList" type="tiles">attach.list</result></action><action name="upload" type="tiles">attach.add</result><result name="success" type="tiles">window.close</result></action><action name="attachDelete" type="redirect">${url}</result></action><action name="download" type="stream"><param name="contentType">application/octet-stream</param><param name="contentDisposition">attachment;filename=${uploadFileName}</param><param name="bufferSize">4096</param><param name="inputName">targetFile</param></result></action>
?
五、列表JSP页面源代码
<cjm:toolBar><cjm:toolBarButton title="上传附件" width="80" onclick="openUploadWindow('upload.action?attach.entityName=%{attach.entityName}&attach.entityId=%{attach.entityId}&attach.refName=%{attach.refName}&attach.path=%{attach.path}&allowTypes=%{allowTypes}&maxSize=%{maxSize}')" imgSrc="images/toolbar/add.gif"/><cjm:toolBarButton title="删除" onclick="deleteFormRow(document.all['frmAttachList'], 'chk_o_', 'attachDelete.action')" imgSrc="images/toolbar/delete.gif"/></cjm:toolBar><s:form name="frmAttachList"><s:hidden name="attach.path" value="%{attach.path}"/><s:hidden name="attach.entityName" value="%{attach.entityName}"/><s:hidden name="attach.entityId" value="%{attach.entityId}"/><s:hidden name="attach.refName" value="%{attach.refName}"/><s:hidden name="allowTypes" value="%{allowTypes}"/><s:hidden name="maxSize" value="%{maxSize}"/><table border="0" cellspacing="0" cellpadding="2" align="center"><tr height="25"> <td width="25"><input type="checkbox" onclick="checkAll(this)"></td> <td>附件名称</td> <td width="100">文件大小</td> <td width="150">文件类型</td> <td width="130">创建时间</td> <td width="50">下载</td> </tr> <s:iterator value="attachList" id="attach" status="st"> <tr <s:if test="#st.odd">name="chk_o_<s:property value='#st.count'/>" value="<s:property value='#attach.id'/>"></td> <td align="left"> <s:property value="#attach.name"/></td> <td align="center"> <s:property value="#attach.fileSize"/> K</td> <td align="center"> <s:property value="#attach.contentType"/></td> <td align="center"> <s:date name="#attach.createDate" format="yyyy-MM-dd HH:mm"/></td> <td align="center"><a href="download.action?attach.id=<s:property value="#attach.id"/>">下载</a></td> </tr> </s:iterator></table></s:form>
?
六、附件添加JSP页面源代码
<s:form action="upload" name="frmUpload" method="post" enctype="multipart/form-data"><s:hidden name="attach.path" value="%{attach.path}"/><s:hidden name="attach.entityName" value="%{attach.entityName}"/><s:hidden name="attach.entityId" value="%{attach.entityId}"/><s:hidden name="attach.refName" value="%{attach.refName}"/><s:hidden name="allowTypes" value="%{allowTypes}"/><s:hidden name="maxSize" value="%{maxSize}"/><br><s:file name="upload" label="选择文件" size="55" cdata=" dataType='Require' msg='必填项'"/></s:form>
?
七、范例
attachList.action?attach.entityName=Organization&attach.entityId=${org.orgId}&attach.refName=attachment&attach.path=/sim&allowTypes=txt&maxSize=10485760
??
1 楼 wiely 2008-10-25 怎么实现下载列表呢?比如说是在一个界面有一个下载列表,用户可以选择某个进行下载。 2 楼 raymond.chen 2008-10-25 可以到我的博客 http://chenjumin.iteye.com 查阅《基于Struts2的通用文件上传实现》这篇文章的一、二两章,从中你可以找到答案。看download这个Action的配置和源代码就知道了。