Struts下使用type="stream"配置action,文件下载时报错getOutputStream() has already been called
在网上找了一下解决办法
http://www.cnblogs.com/zenger1025/archive/2013/02/05/2893219.html
但是它这里使用的不是type="stream"配置action,所以他这里可以使用return null
但是我使用的是type="stream"配置action,所以不能return null
请问这样应该怎么解决呢?
或者如果说不用type="stream"配置action,那么应该怎么配置呢?html页面又如何实现呢?
我在CSDN也发帖询问了,网址是:
http://bbs.csdn.net/topics/390713586?page=1#post-396797319
但是问题还没有解决。。。求大神,,,,
以下是我的struts配置:
<action name="download" class="Actions.FileActions"> <result name="success" type="stream"> <param name="contentType">application/octet-stream</param> <param name="contentDisposition">attachment;filename="${fileFileName}"</param> <param name="inputName">downloadFile</param> <param name="bufferSize">4096</param> </result> <result name="input">/index.jsp</result> </action>action是这样写的:
public InputStream getDownloadFile() { // System.out.println("downloadfile..."); File_UploadDaoImpl uploadDaoIpml = null; DownloadHistoryDaoImpl historyDaoImpl = null; conn = DBCPpool.getConnection(); uploadDaoIpml = new File_UploadDaoImpl(conn); historyDaoImpl = new DownloadHistoryDaoImpl(conn); File_Upload file = null; try { file = uploadDaoIpml.selectFileById(Integer.parseInt(id)); fileFileName = file.getFileName() + file.getType(); fileFileName = new String(fileFileName.getBytes(),"iso8859-1"); //登记下载记录 //从session中获取当前用户 HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); DownloadHistory downHistory = new DownloadHistory(); downHistory.setUserName(user.getLoginName()); downHistory.setFileId(file.getId()); downHistory.setFileName(file.getFileName()); downHistory.setFileType(file.getType()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH🇲🇲ss"); String downTime = sdf.format(new Date()); downHistory.setDownTime(downTime); historyDaoImpl.addHistory(downHistory); } catch (NumberFormatException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally{ if(conn!=null) try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } /* return ServletActionContext.getServletContext().getResourceAsStream( "/uploadFiles/" + file.getDepartment() + "/" + file.getFileName() + file.getType()); */ return ServletActionContext.getServletContext().getResourceAsStream( file.getFileDir() + "/" + file.getFileName() + file.getType()); }前台使用easyui框架编写,直接一个按钮连接到action下载,使用ajax提交
//文件下载 function downloadFlie(){ var rows = $("#dg").datagrid("getSelections"); if(rows.length <=0){ $.messager.alert("系统提示","请选择一个文件"); }else if(rows.length >1){ $.messager.alert("系统提示","每次只能下载一个文件"); }else{ document.getElementById("downId").value = rows[0].id; document.downloadFM.submit(); } }HTML代码:
<form id="downloadFM" name="downloadFM" action="download" method="post" style="display: none;"> <input type="hidden" id="downId" name="id" /> </form>
是不是下载的文件被占用了?不是,就一个人早操作,就是点了下载,连续多点几次就会这样了,然后就没反应了,后台报这样的错
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。