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

标签 java spring spring-boot spring-mvc model-view-controller

我正在尝试构建一个应用程序(使用 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/

相关文章:

java - 使用 TLS PSK 加密时如何正确检测流结束?

java - NetBeans 中的 GroupLayout 自动生成代码

JAVA移动设备-本地存储数据

java - hibernate/jpa Autowire 注释产生 Nullpointer 异常错误

java - spring-data-mongodb 未正确映射整数值

java - 启动SpringBoot 2.0.3.RELEASE时出错

java - 如何使用插件 DevKit 在项目树中设置文件突出显示颜色

java - 在服务器运行时将表内容从 Oracle DB 加载到 Spring Bean

spring-boot - Spring Data JPA 错误 : InvalidDataAccessApiUsageException: HOUR_OF_DAY: 0 -> 1

spring - 使用Spring-Reactor针对不同JVM进行异步事件驱动编程