【问题标题】:how to retrieve images from server using spring boot and reactjs如何使用spring boot和reactjs从服务器检索图像
【发布时间】:2021-06-03 22:40:57
【问题描述】:

我使用 spring boot 作为后端,reactjs 作为前端。我将图像和视频存储在服务器上。然后将其检索到前端。使用 localhost 时,它可以正常工作。但是在我在 ubuntu 服务器上部署此应用程序后,我无法预览图像。(但图像保存过程成功)。在 ubuntu 中,我的 spring boot jar 文件位于 /root/main/test。但是上传的图像保存在根文件夹(/upload/image.jpg)之外。所以我不能把它作为完整的 url 检索。例如 mydomain.com/upload/image.jpg 不起作用。如何使用 react js 获取此图像

【问题讨论】:

  • 这完全是你后端的问题。您如何尝试在 Spring 中获取图像? (我的意思是显示一些代码)
  • 要提供文件,您需要安装 nginx 或 apache 之类的服务器
  • @k-wasilewski String[] split = filename.split("primages/");字符串 fileurl = split[1];路径文件 = userroot.resolve(fileurl);资源资源 = new UrlResource(file.toUri()); if (resource.exists() || resource.isReadable()) { 返回资源; } else { throw new RuntimeException("无法读取文件!");这就是我检索图像的方式。这将图像文件作为资源返回
  • @Aman 我已经使用 nginx 来运行我的 Web 应用程序。你的意思是我需要单独的 nginx 服务来处理图片??
  • 一个就够了。只需提供正确的图像 url 的反应(理想情况下应该通过后端响应来完成)。像这样{...., "thumbUrl": "http://ngnix-addr/url/image.jpg"} 这样react就可以正常渲染图片了。如果您有 spring-security,请确保您允许访问这些路径。

标签: reactjs angularjs spring spring-boot


【解决方案1】:

您可以配置 spring boot 以提供静态内容:

spring.resources.static-locations=file:/upload

或使用代码:

@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {
  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry
      .addResourceHandler("/upload/**")
      .addResourceLocations("file:/upload/");
 }
...

【讨论】:

  • 如何使用前端框架获取此位置。比如图片网址
  • http[s]://domain/upload/folders.../image.extension
  • 我在 Spring Boot 中将项目作为静态内容进行了反应。我试过这段代码。但是在构建 jar 文件之后,它会在这个给定的位置搜索 react 应用程序。并且在构建 jar 文件之后,服务器中也没有这样的目录。我该如何处理?
猜你喜欢
  • 1970-01-01
  • 2013-04-27
  • 2014-02-17
  • 2015-09-08
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多