2014-10-16 70 views
0

我正在使用Struts 2,并且我写了下面的代码从客户端下载Zip。它在本地工作正常,但是当远程用户(不同网络)尝试下载时,他们得到错误,找不到页面。向浏览器写入流时清除缓存

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    ZipOutputStream zos = new ZipOutputStream(baos); 
    ZipEntry ze= new ZipEntry("test.xml"); 
    zos.putNextEntry(ze); 
    for(MessagesList messageEntry:allMessages){ 
     String headers= "<Message>\n<Header>\n"; 
     Map<String,String> header = messageEntry.getTradeMessages().getJmsHeaders(); 
     String keyValue=""; 
     for(Map.Entry<String, String> entry : header.entrySet()){ 
      keyValue += entry.getKey()+":"+entry.getValue()+","; 
     } 
     headers += keyValue+"\n</Header>\n"; 
     zos.write(headers.getBytes()); 
     String contents="<Body>\n"+messageEntry.getTradeMessages().getMessageContent()+"</Body>\n</Message>\n"; 
     zos.write(contents.getBytes()); 
    } 
    zos.closeEntry(); 
    zos.close(); 

    stream = new ByteArrayInputStream(baos.toByteArray()); 


    return "download"; 
+0

我们需要更多信息。堆栈跟踪,环境,配置的相关部分(struts.xml,web.xml)以及用于调用此操作的JSP或URL。 – 2014-10-17 08:13:12

+0

远程用户是否通过代理进入? – 2014-10-17 09:24:27

+0

没有代理。他们在不同的国家,并通过VPN连接 – 2014-10-17 13:05:00

回答

0

这里是我测试的代码,它工作正常。

HttpServletResponse response = ServletActionContext.getResponse(); 
    response.setHeader("Cache-Control", "no-store, no-cache"); 
    response.setHeader("Pragma","");