gpt4 book ai didi

java - Struts2中的动态文件下载

转载 作者:行者123 更新时间:2023-12-01 15:34:43 26 4
gpt4 key购买 nike

在我的 Struts2 应用程序中,我有一个文件名列表页面,单击该文件名将下载该文件。这里文件名来自数据库。为此我已经编码了

<iterator list... 
<a href="filedownload.action?filepath=${filepath}>${filepath} </a>
</iterator...

在文件下载操作中,我编写了打开文件流的代码(struts2 filedownalod)。

它适用于除 Firefox7+ 之外的所有浏览器。它抛出**“内容错误”**

最佳答案

我认为 URL 编码存在一些问题。我认为将路径作为参数传递不是个好主意。将数据库上的 ID 传递给操作并通过 FileInputStream 下载是安全的。至少,您可以在要下载特权文件时检查用户的权限。

我会这样做:

<iterator list... 
<a href="filedownload?id=%{id_in_the_database} </a>
</iterator...

Action 类

public String download() throws Exception {

fileName = getFromDatabaseById(id);

try
{
fileInputStream = new FileInputStream(new File(FILE_FOLDER + filename));
}
catch(FileNotFoundException ex)
{
logger.error(this.getClass().getSimpleName() + ": File in " + FILE_FOLDER + filename + " cannot be found.");
return ERROR;
}

return DOWNLOAD;
}

并在你的 struts.xml 中

 <action name="filedownload" method="download" class="com.yourproject.filedownload">
<result name="download" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="inputName">fileInputStream</param>
<param name="contentDisposition">attachment;filename=%{filename}</param>
<param name="bufferSize">4096</param>
</result>
<result name="error" type="redirectAction">erroraction</result>
</action>

关于java - Struts2中的动态文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9060711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com