3

如何隐藏我的网络服务器上的文件?我有一个目录“ files”,其中存储了一些 pdf 文件。我不想让用户通过这样的 URL 访问文件:

www.example.com/files/1.pdf

而不是这个,我想在数据库中映射每个文件和一个 id 并让用户像这样访问它:

 www.example.com/fileId=5569a

用户应该无法访问该files目录。

我怎样才能做到这一点?

4

1 回答 1

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 '/' 的 Servlet,它将检查请求中的 'fileId' 参数。如果找到它,servlet 将向用户提供文件下载,否则它将用户重定向到主页。

有关实现 servlet,请参阅单击超链接时调用 servlet

实现文件下载请看我的帖子有没有一种通用的方法可以在jsp中下载所有类型的文件?

于 2012-07-14T14:57:47.480 回答