如何隐藏我的网络服务器上的文件?我有一个目录“files
”,我在其中存储了一些pdf文件。我不想让用户通过这样的URL访问文件:
www.example.com/files/1.pdf
而不是这个我想用DB中的id映射每个文件,让用户像这样访问它:
www.example.com/fileId=5569a
用户无法访问files
目录。
我该怎么做?
答案 0 :(得分:4)
这是一个非常正确的答案
首先,您应该使用部署描述符(web.xml)拒绝访问该目录
<security-constraint>
<display-name>excluded</display-name>
<web-resource-collection>
<web-resource-name>No Access</web-resource-name>
<url-pattern>/files/*</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>No Access</web-resource-name>
<url-pattern>/files/*</url-pattern>
<http-method>DELETE</http-method>
<http-method>PUT</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint />
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
既然您的文件是安全的,您必须使用url-mapping&#39; /&#39;来实现Servlet。这将检查以找到&#39; fileId&#39;请求中的参数。如果找到它,servlet将向用户提供文件下载,否则它会将用户重定向到主页。
要实现servlet,请参阅帖子Call a servlet on click of hyperlink
要实施文件下载,请参阅我的帖子Is there a common way to download all types of files in jsp?