gpt4 book ai didi

java - 如何使用 Java spring 提供动态创建的文件?

转载 作者:行者123 更新时间:2023-12-01 06:01:49 25 4
gpt4 key购买 nike

我正在尝试构建一个应用程序(使用 Spring boot)来生成文件(.js 文件),这些文件必须是公开可用的。这些文件(创建后)应该可以通过我的服务器上的链接访问,并且可以插入其他人的网站(带有链接)。类似于“jQuery”或“Google Adwords”的工作方式(它们如何与 html 脚本标签连接)。因此,我面临的问题(或者只是缺乏知识)是如何动态创建这些文件并使它们可供公开访问。

一般的想法是:1 个用户有 1 个文件夹(例如在 resources/files 文件夹内)(我们将其命名为folder1232)。在这个文件夹中,生成了特定的 js 文件(例如 111.js)。所以我希望他能够通过请求 app.com/files/folder1232/111.js URL 来访问他的文件。将会采取怎样的方式呢?如果有不清楚的地方,请告诉我。

我目前正在使用资源文件夹来了解它的一般工作原理。我看到的是文件在启动时以某种方式映射(例如,如果我在运行时创建一个包含文件的新文件夹,则在重新启动应用程序之前无法访问它)。我也尝试过使用 WebMvcConfigurer,但我认为我缺少一些基本的东西。

@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/files/**")
.addResourceLocations("file:/files/")
.setCachePeriod(3600)
.resourceChain(true)
.addResolver(new PathResourceResolver());
}
}

我希望从浏览器访问新创建的文件(在运行时)。如果我也能够访问新创建的文件夹(在运行时),那就太完美了。但是 atm 我必须重新启动应用程序才能访问新创建的文件和文件夹。

更新:接下来我尝试做的是在我的 java 项目之外创建一个文件夹。像这样:/Users/%用户名%/Documents/fileFold并将我的 addResourceHandler 函数更改为:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/files/**")
.addResourceLocations("file:/Users/%username%/Documents/fileFold/")
.setCachePeriod(0)
.resourceChain(true)
.addResolver(new PathResourceResolver());
}

现在一切正常了。感谢大家!注意:不要忘记 addResourceLocations 函数中的最后一个斜杠,没有它映射将无法工作(至少对我不起作用)。

最佳答案

首先,了解您实际试图解决的问题。不要只是跳到“我想要这个解决方案”。

您试图解决的问题似乎是这样的:

  1. 我的应用程序将“创建”一些副本(副本是文本的通用术语,其中包括您的 .js 文件)。
  2. 该副本将可通过一些唯一标识符公开寻址。

上述要求都不要求您在任何地方创建文件。

一个简单的解决方案是:在下面的解决方案中,“行”可以是一行,也可以是 1 行或多行的有序集合。

  1. 在表中创建一行,其中包含要提供的“副本”。
  2. 使用唯一值来标识行。
  3. [可选] 创建一个表,以在行的人类可读名称(也称为文件名)和该行的唯一标识符之间进行转换。
  4. 创建 REST 服务以按人类可读的名称提取行。

关于java - 如何使用 Java spring 提供动态创建的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56428855/

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