在Spring MVC中如何正确使用外部文件?

问题描述:

我无法访问未存储在src/main/项目路径文件在Spring MVC中如何正确使用外部文件?

项目结构:
Project tree

现在我可以从webapp/resources访问所有文件,但不能从userResources文件夹

访问文件

春resourceHandler:

@EnableWebMvc 
@Configuration 
public class AppConfig extends WebMvcConfigurerAdapter { 
//some configs 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resource/**").addResourceLocations("/resources/"); 
     registry.addResourceHandler("/vendors/**").addResourceLocations("/vendors/"); 
     //this line won't work 
     registry.addResourceHandler("/userResources/**").addResourceLocations(
     "home/pika/workspace/Spring/Bookmarks/userResources") 
     ); 
    } 
} 

鉴于

<img class="fb-image-lg" src="/home/pika/workspace/Spring/Bookmarks/userResources/admin/profile/wallImage.png" alt="Profile wall image" align="left"> 

没有找到图片,我试图改变SRC着: “/userResources/admin/profile/wallImage.png” 反正这是行不通的

<img class="fb-image-profile thumbnail" src="/resources/images/defaultProfilePhoto.png" alt="Profile face image" align="left"> 

找到的图像。

我做错了什么?

PSGithub repo可能它可以帮助你了解项目结构

+0

您的视图文件(html/jsp)位于何处? –

+0

@RohitGaikwad webapp/WEB-INF/views/user/profile.jsp – GVArt

位置"home/pika/workspace/Spring/Bookmarks/userResources"被看为Web应用程序中,而不是文件系统(就像其他以“/资源”)的资源。要针对文件系统,使用文件网址:

file:/home/pika/workspace/Spring/Bookmarks/userResources 

然而,这是一个可怕的想法:在这里您可以部署应用程序的Web服务器不具有相同的目录结构,你对你的一个开发者机器。你应该在webapp中包含这些资源。或者将这些图像存储在数据库中。或者在文件系统上,但至少在基于外部的目录下,在代码中不会像这样硬编码。

+0

谢谢,为了回答,它没有编码,我列出了几个这样的代码来解释逻辑。 “文件夹路径”存储在可编辑的“属性文件”中。我阅读了一些文章,建议将用户文件保存在外部目录中,不在项目中,无论如何感谢您的建议 – GVArt

+0

如果数据来自应用程序的用户,那么它肯定应该不在应用程序中。在文件系统上,在数据库中或在外部存储服务中。 –