也就是说,如果你要下载文件夹下的所有文件,你就需要对所有文件都发送请求,并且挨个选择保存位置。
如果要解决上面的问题,你可以按照下面的方式做。
1、建立一个servlet(structs2下应该是action吧),用来接收用户的请求。
2、根据用户的请求,将要下载的内容使用org.apache.tools.zip包下的类进行打包(JDK下也有相应的ZIP处理的类,不过它对于中文的文件名处理有问题)。
注:构造ZipOutputStream时使用HttpServletResponse.getOutputStream()构造。这样向ZipOutputStream中写入的内容,客户端就能直接获取。
以上,希望对你的帮助,可以的话,请采纳。
这个异常并不影响程序的正常运行,主要原因是:服务器段已经在做写 *** 作了,只是客户端一接受就关闭了socket连接,tomcat会抛出ClientAbortException,所以只需要屏蔽这个异常即可,两种方式,在struts2中进行相关配置例如: <struts><!-- 下载文件的Action定义 -->
<action name="download" class="action.DownLoadAction">
<!-- 设置文件名参数,由页面上传入 -->
<param name="fileName"></param>
<result name="success" type="stream">
<!-- 下载文件类型定义 -->
<param name="contentType">text/plain</param>
<!-- 下载文件处理方法 -->
<param name="contentDisposition">
attachmentfilename="${downloadFileName}"
</param>
<!-- 下载文件输出流定义 -->
<param name="inputName">downloadFile</param>
</result>
<exception-mapping result="client-abort-exception" exception="org.apache.catalina.connector.ClientAbortException"></exception-mapping>
</action>
</struts>
<package name="default" extends="struts-default" abstract="true">
<global-results>
<result name="client-abort-exception">/abort.jsp</result>
</global-results>
</package>
其中 :<exception-mapping result="client-abort-exception" exception="org.apache.catalina.connector.ClientAbortException"></exception-mapping>
<result name="client-abort-exception">/abort.jsp</result>
含义就是截获异常发送到一个空页面。
另一种方法就是修改tomcat中有关此异常的jar包中的ClientAortException,忽略此异常,或者另进行处理,如果不用tomcat而是resin。那么resin有一个参数ignore-client-disconnect,直接设置一下即可,不需要做上述 *** 作。
<param name="contentType">application/octet-stream</param>要是想知道所有文件的类型,可以在tomcat安装目录下的:conf目录下的web.xml文件里边,往下翻,全部的文件类型都在里边!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)