Java Spring Access外部应用程序的静态资源

朱丽叶:

我想让我的用户上传图像,然后将其存储在服务器上。由于将这些映像放在应用程序资源/静态文件夹中将在每次新部署中将其删除,因此我想在Spring应用程序之外存储和访问这些映像。

我仍然需要在html上下文中显示图像,因此我想做的是将路径(例如“ userimages”)映射到应用程序之外的位置(例如“ / home / userimages /”),以便当调用url localhost:8080 / userimages / hi.jpg,返回来自/home/userimages/hi.jpg的图像。

我发现函数addResourceHandlers似乎可以完全做到这一点,但是我在实现它时遇到了麻烦。首先,我不确定是扩展WebMvcConfigurationSupport还是WebMvcConfigurationAdapter或实现WebMvcConfigurer。似乎没有任何工作。我也尝试了类似@EnableWebMvc等类的其他@ @-没有任何变化。一些网站建议将Class移到与应用程序相同的程序包中-也不起作用。

我认为函数addResourceHandlers甚至都没有被调用,而且我不知道如何确定。目前这是我的代码:

package global;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
@EnableWebMvc
public class StaticResourceProvider implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //This never gets printed
        System.out.print("Adding resource handler");
        registry
                .addResourceHandler("/user-images/**")
                //for Unix: file:/opt/files
                //TODO: use path variable here
                .addResourceLocations("file:///C:/Users/Juliette/Pictures/");
    }
}

而我的应用程序的入口点:

package controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class Application  extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) {
        //TODO: remove the first array element and read it as the name of this instance
        SpringApplication.run(Application.class, args);
    }

}

有人可以告诉我我的错误是什么吗?当前,当我访问localhost:8080 / user-images / nameOfSomeImage.jpg时,仅返回白页,并且服务器日志中未显示任何消息。

朱丽叶:

我设法通过在同一个程序包中移动两个类并按如下所示对其进行修改来使其工作:

package controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        //TODO: remove the first array element and read it as the name of this instance
        SpringApplication.run(Application.class, args);
    }

}

和ResourceProvider:

package controller;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class StaticResourceProvider implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
                .addResourceHandler("/css/**")
                .addResourceLocations("classpath:/static/css/");

        registry
                .addResourceHandler("/js/**")
                .addResourceLocations("classpath:/static/js/");

        registry
                .addResourceHandler("/img/**")
                //for Unix: file:/opt/files
                //TODO: use path here
                .addResourceLocations("file:///C:/Users/Juliette/Pictures/");
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Spring MVC应用程序中找不到静态资源

无法在Spring MVC应用程序中加载静态资源

在Spring Boot 2.0 Web应用程序中,如何从静态Javascript文件中访问Java变量?

Java的Spring应用程序的时区巴西

Java Spring应用程序插件

从Java启动Spring应用程序的异常

在Spring Boot和Spring Security应用程序中提供静态Web资源

使用java config在Spring应用程序的Web项目外部单独存储属性

打包一个包含JSP和静态资源的Spring Boot应用程序

在Spring Boot应用程序中通过Jersey资源方法提供静态内容

Spring Boot 2.0.0和同一应用程序具有不同域的静态资源

Java应用程序中的Spring缓存实现?

获取非 Spring Java 应用程序的详细 Metrics 数据

在独立的Java应用程序中使用Spring 3 autowire

对Java Spring应用程序进行性能分析

在基于Java / Spring的应用程序中实现PayPal

JAVA SPRING rest应用程序的主体收到null

在Java Spring Boot应用程序内部执行Kotlin脚本

Spring应用程序无法在Java 1.7中加载

使用Java Spring应用程序进行SAP RFC调用

具有标准Java应用程序的Spring Security SAML

Eclipse + Maven + Spring应用程序:java.lang.NoClassDefFoundError

Java - 从 Spring Boot 应用程序获取变量

如何找出基于Spring或Spring Boot或Spring MVC构建的Java应用程序

Java:从Play Framework应用程序使用Spring WebFlux应用程序

如何在Grails应用程序和Java应用程序之间共享Spring Security类?

将Java应用程序(使用Spring的Web和桌面应用程序)与mongodb连接

如何使用 IDE 和 Java -jar 命令读取 Spring Boot 应用程序中资源文件夹中存在的文件?

Spring-如何使用Spring Dependency Injection编写独立的Java应用程序