一个
Servlet或资源处理程序不能仅仅从文件系统提供文件直接。您需要编写自己的
@Controller处理程序方法。例如
@Controllerpublic class ImagesController { public static final String base_PATH = "/opt/uploads/contactImages"; @RequestMapping(value = "/{fileName}" , method = RequestMethod.GET) public ResponseEntity<FileSystemResource> getFile(@PathVariable("fileName") String fileName) { FileSystemResource resource = new FileSystemResource(new File(base_PATH, fileName)); ResponseEntity<FileSystemResource> responseEntity = new ResponseEntity<>(resource, HttpStatus.OK); return responseEntity; }}使用
ResponseEntity该类,您还可以设置不同的响应头和状态代码。
您现在可以在以下位置访问以上内容
http://localhost:8080/images/file.png
我认为以上内容不适用于嵌套目录中的文件。
请注意,
docbase在属性
<Context docbase="/opt/uploads/contactImages/" path="/images" />
是不正确的。该
docbase属性指定
此Web应用程序的文档库(也称为上下文根)目录,或Web应用程序存档文件的路径名(如果直接从WAR文件执行此Web应用程序)。您可以为此目录或WAR文件指定绝对路径名,或者相对于所属主机的appbase目录的相对路径名。
因此,它必须指向您的Web应用程序,而不是指向存储文件的随机目录。



