我想在我的服务器上创建一个文件夹,对应于我的 Web 应用程序中的每个用户。
我如何通过java动态创建一个新文件夹?我希望该新文件夹包含与特定用户相对应的资源。我现在可以通过直接提供该资源的 URL 来作为客户端访问这些资源吗例如..
http://localhost:8080/myapp/newfolder/a.pdf
那可能吗?
我想在我的服务器上创建一个文件夹,对应于我的 Web 应用程序中的每个用户。
我如何通过java动态创建一个新文件夹?我希望该新文件夹包含与特定用户相对应的资源。我现在可以通过直接提供该资源的 URL 来作为客户端访问这些资源吗例如..
http://localhost:8080/myapp/newfolder/a.pdf
那可能吗?
我不会直接通过 URL 公开文件夹,因为这将是一个严重的安全问题,如果理解命名方案,一个用户可以访问另一个用户的文件夹。
相反,我会
java.io.File.mkdir()
.编写一个简单的 Servlet,它会从路径中读取servletRequest.getPathInfo()
、标识用户名以及要提供的文件。为此,servlet 类和 URL 模式应定义如下:
<servlet-mapping>
<servlet-name>read-file</servlet-name>
<url-pattern>/read-file/*</url-pattern>
</servlet-mapping>
要访问a.pdf
用户文件xyz
,URL 将是http://server/read-file/xyz/a.pdf
.
检查访问 URL 的用户是否与路径信息中找到的用户名相同。
FileInputStream
,例如 1MB,并写入(中间不存储任何位置) 。ServletOutputStream
Content-Type
Content-Disposition
只需检查一下。 在 Windows 和 Linux 机器上使用 Java 程序创建一个新文件夹
此外,您可以存储目录和相应用户的路径映射。
您可以使用 Java 创建一个目录new File("path"+File.seperator+"foldername").mkdir()
我假设您的目标是在 web 应用程序的 war 文件夹中创建它。这不是推荐的方法,因为如果您重新部署您的战争,您将丢失用户数据。
更好的方法是使用系统属性将存储库路径配置到您的应用程序中
例如:repository=D:\userdata 并在此 repo 中创建您的文件夹。然后您可能需要一个自定义 servlet 以允许下载此文件,您必须阅读该文件并将其放入 servlet 响应中。此文件夹不会受到重新部署war文件的影响。
即使这种方法也是错误的,因为您无法在这种方法中扩展到多个应用服务器,最好将用户数据存储在中央存储库(amazon s3,机架空间文件)或数据库中。