Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SpringBoot和SpringMVC从文件系统中的任何位置提供文件_Java_Spring_Jsp_Spring Mvc_Spring Boot - Fatal编程技术网

Java 使用SpringBoot和SpringMVC从文件系统中的任何位置提供文件

Java 使用SpringBoot和SpringMVC从文件系统中的任何位置提供文件,java,spring,jsp,spring-mvc,spring-boot,Java,Spring,Jsp,Spring Mvc,Spring Boot,我正在尝试制作一个web应用程序,你可以上传一个保存在我的文件系统中的图像,然后在某个地址(有点像imgur)提供给用户 在上传并保存到我的系统中之后,我一直在为这些图像提供服务方面遇到问题。有人向我指出,问题可能是当我应该将图像存储在我的项目目标文件夹中时,我将图像存储为源代码树的一部分。现在,我之所以将图像存储在project/src/main/resources/static/images中,首先是因为我无法从其他任何地方在我的网站上提供静态内容 我已经搜索和阅读了这几天了,我还没有找到任

我正在尝试制作一个web应用程序,你可以上传一个保存在我的文件系统中的图像,然后在某个地址(有点像imgur)提供给用户

在上传并保存到我的系统中之后,我一直在为这些图像提供服务方面遇到问题。有人向我指出,问题可能是当我应该将图像存储在我的项目目标文件夹中时,我将图像存储为源代码树的一部分。现在,我之所以将图像存储在project/src/main/resources/static/images中,首先是因为我无法从其他任何地方在我的网站上提供静态内容

我已经搜索和阅读了这几天了,我还没有找到任何适用的解决方案。这类问题的答案通常涉及到我的项目中没有的文件(比如application-servlet.xml或web.xml),以及我以前从未使用过的文件(我对Spring、Spring Boot和JavaWeb开发都是非常陌生的)

我的项目是由github上的一位导师创建的,然后我克隆了它,包括Application.java,因此我看到的使用Spring配置的解决方案也不适合

以下是我的项目的(希望相关)部分:

这是我的Application.java文件。我没有对它做任何处理,它与我克隆的原始github中的文件完全相同

package project;

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

/**
 * The main class of the project.
 * By running the main class of {@link Application} then you start the Spring Boot system
 */
@SpringBootApplication
public class Application extends SpringBootServletInitializer{

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

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }

}
这是我的application.properties。在这里,我刚刚添加了数据库内容:

spring.view.prefix=/WEB-INF/jsp/
spring.view.suffix=.jsp
multipart.maxFileSize=-1
debug=true

spring.datasource.url=jdbc:postgresql://localhost:5432/finaltest
spring.datasource.username=myusername
spring.datasource.password=mypassword
这是我的pom.xml(我的项目中唯一的xml文件)。在这里,我刚刚添加了数据库依赖项:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>HBV501G</groupId>
    <artifactId>Spring_Web_MVC</artifactId>
    <version>0.1</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.5.RELEASE</version>
    </parent>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.4-1200-jdbc41</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

4.0.0
HBV501G

您可以创建一个
@配置
bean,如

@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        super.addResourceHandlers(registry);
        registry.addResourceHandler("/**").addResourceLocations("file:///D:/your_image_location/");
    }
}

请确保将bean放在
应用程序所在的同一个包中,或者放在它下面的某个地方,以便自动扫描它

可能的副本正是我要找的!
package project.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import project.service.MediaFile;
import project.service.MediaFileRepository;

import java.util.List;

/**
 * Created by johannesthorkell on 13.10.2015.
 */

@Controller
@RequestMapping("/media")
public class MediaController {

    @Autowired
    private MediaFileRepository repository;

    @RequestMapping("/{media}")
    public String newMedia(@PathVariable String media, Model model) {
        List<MediaFile> nameExists = repository.findByName(media);
        if (nameExists.size() > 0) {
            MediaFile mediaFile = nameExists.get(0);
            String name = mediaFile.getName();
            String type = mediaFile.getType();
            model.addAttribute("image", "/img/" + name + type);
            return "media";
        }
        return "error";
    }
}
<!DOCTYPE html>

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Home</title>
    </head>
        <h1>Media Upload</h1>
        <img src="${image}">
        <div id="links">
            <a href="/uploadmedia">upload media</a>
            <a href="/searchmedia">search media</a>
        </div>
    </body>
</html>
@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        super.addResourceHandlers(registry);
        registry.addResourceHandler("/**").addResourceLocations("file:///D:/your_image_location/");
    }
}