链接以下载JSF中的zip文件

链接以下载JSF中的zip文件,jsf,primefaces,download,Jsf,Primefaces,Download,我在服务器中有一个zip文件。我想在点击链接后下载该文件 有没有办法创建一个链接来下载JSF或PrimeFaces中的zip文件,比如客户端的HTML5download属性 <a href="/images/myw3schoolsimage.jpg" download> HTML5下载属性与此无关。它只允许您指定应显示在“另存为”对话框中的备用文件名 例如 然后您可以将其称为: <a href="#{request.contextPath}/files/foo.zip">

我在服务器中有一个zip文件。我想在点击链接后下载该文件

有没有办法创建一个链接来下载JSF或PrimeFaces中的zip文件,比如客户端的HTML5
download
属性

<a href="/images/myw3schoolsimage.jpg" download>

HTML5
下载
属性与此无关。它只允许您指定应显示在“另存为”对话框中的备用文件名

例如

然后您可以将其称为:

<a href="#{request.contextPath}/files/foo.zip">download foo.zip</a>
<a href="/files/foo.zip">download foo.zip</a>
然后您可以将其称为:

<a href="#{request.contextPath}/files/foo.zip">download foo.zip</a>
<a href="/files/foo.zip">download foo.zip</a>
您可以用与#1相同的方式引用它:



虽然这是一个老问题,但为了完整性起见,我想在@BalusC的回答中添加这一点(由于声誉不好,因此无法发表评论):如果复制粘贴不变,@BalusC(使用@WebServlet)的第三个解决方案可能导致“路径遍历攻击”

您可以使用URL尝试攻击(针对Linux服务器):

<yourApplicationURLUntilContextPath>/files/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/etc/passwd
有关路径遍历攻击的更多解决方案,请参阅


希望它能帮助一些开发人员……

就你所知,看看
p:fileDownload
,也许有一天它会对你有所帮助:@Pellizon:只有当你的磁盘上没有一个具体的文件,而JSF管理的bean中只有一个
InputStream
byte[]
时,这才有用。
<a href="#{request.contextPath}/files/foo.zip">download foo.zip</a>
<yourApplicationURLUntilContextPath>/files/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/%C0%AE/etc/passwd
if(!file.getAbsolutePath().equals(file.getCanonicalPath()))
{
response.sendError(404);
}