我使用的Struts2框架,在那里我们上传到并从远程服务器下载路径工作的文件上传/下载功能,在Java。 一切似乎很好地工作,当我在我的本地机器与本地路径从我在哪里下载命中注定的路检查功能,并到我上传任何格式的文件。 开发环境有JBoss服务器。 但是,当我在督促ENV,其中应用程序部署在WebLogic Server中运行相同过来,.TXT,.CSV和.html文件的(基本上是文本格式的文件)有我的jsp源代码添加到文件的内容。 下面是我用网上下载的代码:
BufferedOutputStream bout=null;
FileInputStream inStream = null;
byte[] buffer = null;
try {
inStream = new FileInputStream(path+File.separator+filename);
buffer = new byte[8192];
String extension = "";
int pos = filename.lastIndexOf(".");
if (pos > 0)
extension = filename.substring(pos+1);
int bytesRead = 0, bytesBuffered = 0;
response.setContentType("application/octet-stream");
response.setHeader("content-disposition", "attachment; filename="+ filename);
bout = new BufferedOutputStream(response.getOutputStream());
while((bytesRead = fistrm.read(buffer)) > -1){
bout.write(buffer, 0, bytesRead);
bytesBuffered += bytesRead;
if(bytesBuffered > 1048576){
bytesBuffered = 0;
bout.flush();
}
}
} catch (IOException e) {
log.error(Logger.getStackTrace(e));
} finally {
if(bout!=null){
bout.flush();
bout.close();
}
if(inStream!=null)
inStream.close();
}
我曾尝试使用不同的响应内容类型相对于扩展试过,但它是没有帮助的。 好像OutputStream的甚至从InputStream写入之前在它的JSP源代码。
任何人都可以请提出一个解决方案,并解释为什么会出现这种情况?