我正在尝试构建一个应用程序(使用Spring Boot),该应用程序将生成文件(.js文件),这些文件必须公开可用。 这些文件(创建后)应该可以通过我的服务器上的链接进行访问,并且可以插入到其他人的网站中(带有链接)。 类似于“ jQuery”或“ Google Adwords”的工作方式(它们与html脚本标签的连接方式)。 因此,我面临的问题(或只是缺乏知识)是如何动态创建这些文件并使它们可公开访问。
通常的想法是:1个用户有1个文件夹(例如,在resources / files文件夹内部)(我们将其命名为folder1232)。在此文件夹中,生成了他的特定js文件(例如111.js)。因此,我希望他能够通过请求app.com/files/folder1232/111.js URL来访问他的文件。这样做的方式是什么? 如果有不清楚的地方,请告诉我。
我目前正在使用resources文件夹以了解其一般工作方式。我看到的是文件在启动时是以某种方式映射的(例如,如果我在运行时创建带有文件的新文件夹,则在重新启动应用程序之前无法访问该文件)。 我也尝试过使用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 /%username%/ 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函数中的最后一个斜杠,如果没有它,映射将无法工作(至少对我没有帮助)。
答案 0 :(得分:0)
首先, 了解您实际要解决的问题。 不要只是跳到“我想要这个解决方案”。
您要解决的问题似乎是这样的:
以上两个要求均不要求您在任何地方创建文件。
一个简单的解决方案是: 在下面的解决方案中,“行”可以正好是一行,也可以是1个或更多行的有序集合。
答案 1 :(得分:-1)
那么对我特别有用的是: 我创建了一个文件夹来存储项目外的文件。 例如/ Users /%username%/ Documents / fileFold
并将我的addResourceHandlers函数更改为
registry.addResourceHandler("/files/**")
.addResourceLocations("file:/Users/%username%/Documents/fileFold/")
.setCachePeriod(0)
.resourceChain(true)
.addResolver(new PathResourceResolver());
注意:请不要忘记addResourceLocations函数中的最后一个斜杠,没有它,映射将无法工作(至少对我没有帮助)。