gpt4 book ai didi

java - 下载文件时获取附加文件内容的j​​sp源代码

转载 作者:行者123 更新时间:2023-11-29 05:06:22 25 4
gpt4 key购买 nike

我正在使用 Struts2 框架在 Java 中开发文件上传/下载功能,我们在其中上传到远程服务器路径并从远程服务器路径下载。当我使用本地路径检查本地计算机上的功能时,一切似乎都工作正常,本地路径是我下载和上传任何格式文件的目的地路径。开发环境有JBoss服务器。但是当我在产品环境中运行相同的程序时,应用程序部署在 Weblogic 服务器中,.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();

}

我曾尝试针对扩展使用不同的响应内容类型,但没有任何帮助。看起来输出流甚至在从输入流写入之前就已经包含了 jsp 源代码。

谁能提出解决方案并解释为什么会这样?

最佳答案

这是因为您直接在输出流中写入,然后返回一个 struts 结果,即您的 JSP。您正在使用一个 Action ,就好像它是一个 servlet,但事实并非如此。

在 Struts2 中,要实现您的目标,您需要使用 Stream result 键入,如以下答案中所述:

否则,如果您想绕过框架机制并自己手动写入 outputStream(在极少数情况下它很有用,like downloading dynamically created ZIP),那么您必须返回 NONE result .

Returning ActionSupport.NONE (or null) from an Action class method causes the results processing to be skipped. This is useful if the action fully handles the result processing such as writing directly to the HttpServletResponse OutputStream.

但我强烈建议您使用 Stream 结果,这是标准方式。

关于java - 下载文件时获取附加文件内容的j​​sp源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30240284/

25 4 0
文章推荐: MySQL AUTO DECREMENT 而不是 AUTO INCREMENT,这可能吗?
文章推荐: ios - 当 UI 元素包含在另一个 Nib 中时,如何使 UI 元素与同级(单独的 Nib )一样发挥良好作用?
文章推荐: php - 从 mysql 中获取聊天消息
文章推荐: java - Android 中的 SQLite : Foreign Keys and expected