天天看点

springboot、springcloud之静态资源路径的配置 静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取。 转载地址:http://blog.csdn.net/kilua_way/article/details/54601195

静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取。

在Springboot中默认的静态资源路径有:

classpath:/METAINF/resources/

classpath:/resources/

classpath:/static/

classpath:/public/

,从这里可以看出这里的静态资源路径都是在

classpath

中(也就是在项目路径下指定的这几个文件夹)

试想这样一种情况:一个网站有文件上传文件的功能,如果被上传的文件放在上述的那些文件夹中会有怎样的后果?

  • 网站数据与程序代码不能有效分离;
  • 当项目被打包成一个

    .jar

    文件部署时,再将上传的文件放到这个

    .jar

    文件中是有多么低的效率;
  • 网站数据的备份将会很痛苦。

此时可能最佳的解决办法是将静态资源路径设置到磁盘的基本个目录。

在Springboot中可以直接在配置文件中覆盖默认的静态资源路径的配置信息:

  • application.properties

    配置文件如下:
server.port=

web.upload-path=D:/temp/study13/

spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,\
  classpath:/static/,classpath:/public/,file:${web.upload-path}
           

注意:

web.upload-path

这个属于自定义的属性,指定了一个路径,注意要以

/

结尾;

spring.mvc.static-path-pattern=/**

表示所有的访问都经过静态资源路径;

spring.resources.static-locations

在这里配置静态资源路径,前面说了这里的配置是覆盖默认配置,所以需要将默认的也加上否则

static

public

等这些路径将不能被当作静态资源路径,在这个最末尾的

file:${web.upload-path}

之所有要加

file:

是因为指定的是一个具体的硬盘路径,其他的使用

classpath

指的是系统环境变量

  • 编写测试类上传文件
package com.zslin;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.FileCopyUtils;

import java.io.File;

/**
 * Created by 钟述林 [email protected] on 2016/10/24 0:44.
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class FileTest {

    @Value("${web.upload-path}")
    private String path;

    /** 文件上传测试 */
    @Test
    public void uploadTest() throws Exception {
        File f = new File("D:/pic.jpg");
        FileCopyUtils.copy(f, new File(path+"/1.jpg"));
    }
}                

注意:这里将

D:/pic.jpg

上传到配置的静态资源路径下,下面再写一个测试方法来遍历此路径下的所有文件。

@Test
public void listFilesTest() {
    File file = new File(path);
    for(File f : file.listFiles()) {
        System.out.println("fileName : "+f.getName());
    }
}                

可以到得结果:

说明文件已上传成功,静态资源路径也配置成功。

  • 浏览器方式验证

由于前面已经在静态资源路径中上传了一个名为

1.jpg

的图片,也使用

server.port=1122

设置了端口号为

1122

,所以可以通过浏览器打开:

http://localhost:1122/1.jpg

访问到刚刚上传的图片。

转载地址:http://blog.csdn.net/kilua_way/article/details/54601195

继续阅读