Spring Boot配置静态资源实现文件上传在线查看

本文介绍了如何配置Spring Boot以处理静态资源请求,包括`spring.mvc.static-path-pattern`和`spring.resources.static-locations`的设置。通过这些配置,可以实现图片和文档的在线查看与下载,例如通过项目名访问`1.jpg`和`1.doc`。当遇到拦截器访问问题时,也提供了相应解决方案。
摘要由CSDN通过智能技术生成

spring.mvc.static-path-pattern
代表的含义是我们应该以什么样的路径来访问静态资源,换句话说,只有静态资源满足什么样的匹配条件,Spring Boot才会处理静态资源请求。

spring.resources.static-locations
用于告诉Spring Boot应该在何处查找静态资源文件,这是一个列表性的配置,查找文件时会依赖于配置的先后顺序依次进行。

    spring:
      application:
        name: test
      servlet:
		multipart:
		  max-file-size: 500MB
		  max-request-size: 500MB
      mvc:
        static-path-pattern: /material/**
      resources:
        static-locations: file:/opt/oa/enclosure/dispatch,file:/home/version
	cn:
	  chinaunicom:
	    dispatchEnclosurePath: /opt/oa/enclosure/dispatch
	    materialLink: http://10.163.76.160:9010/form/material/

配置以上属性,然后将一个图片(例如:1.jpg)和文档(例如:1.doc)放置到服务器/opt/oa/enclosure/dispatch或/home/version目录下,通过项目名http://10.163.76.160:9010/form/material/1.jpg进行在线打开图片,通过项目名http://10.163.76.160:9010/form/material/1.doc进行在线下载文档。
如果被拦截器拦截访问失败情况下选用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 Spring Boot 文件上传和下载实现的代码示例: 首先,创建一个上传文件的表单页面 upload.html: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>文件上传</title> </head> <body> <h1>文件上传</h1> <form method="POST" enctype="multipart/form-data" action="/upload"> 选择文件:<input type="file" name="file"><br> <input type="submit" value="上传"> </form> </body> </html> ``` 然后,编写一个控制器类 FileController,实现文件上传和下载的逻辑: ```java @RestController public class FileController { // 上传文件 @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) throws IOException { // 获取上传文件的原始文件名 String fileName = file.getOriginalFilename(); // 保存文件到本地磁盘 file.transferTo(new File("D:/upload/" + fileName)); return "上传成功!"; } // 下载文件 @GetMapping("/download/{fileName}") public ResponseEntity<byte[]> download(@PathVariable("fileName") String fileName) throws IOException { // 构造文件对象 File file = new File("D:/upload/" + fileName); if(!file.exists()) { return ResponseEntity.notFound().build(); } // 构造文件下载响应体 HttpHeaders headers = new HttpHeaders(); headers.setContentDispositionFormData("attachment", fileName); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<>(Files.readAllBytes(file.toPath()), headers, HttpStatus.OK); } } ``` 在上述代码中,`@PostMapping("/upload")` 注解表示该方法处理 HTTP POST 请求,并映射到 "/upload" 路径;`@RequestParam("file")` 注解表示获取上传的文件参数;`@GetMapping("/download/{fileName}")` 注解表示该方法处理 HTTP GET 请求,并映射到 "/download/{fileName}" 路径,其中的 `{fileName}` 表示动态的文件名参数。 在上传文件的方法中,我们首先获取上传文件的原始文件名,然后将文件保存到本地磁盘。在下载文件的方法中,我们先判断文件是否存在,如果不存在则返回 404 错误;如果存在则构造文件下载响应体,设置响应头信息,然后将文件内容写入到响应体中。 最后,在应用启动类中添加配置: ```java @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } // 配置静态资源目录 @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/upload/"); } } } ``` 在上述代码中,我们通过 `addResourceHandlers()` 方法配置静态资源目录,将 "/upload/**" 路径映射到本地磁盘上的 "D:/upload/" 目录下。这样,在访问上传的文件时,就可以通过 "/upload/{fileName}" 路径来访问了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值