SpringBoot映射URL访问本地文件,实现文件预览功能
在Spring Boot中,你可以使用ResourceHandlerRegistry
来映射URL访问本地文件,并通过添加一个控制器来实现文件预览。以下是一个简单的例子:
- 配置
WebMvcConfigurer
来映射文件路径:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
private static final String FILE_LOCATION_URL = "/files/**";
private static final String FILE_LOCATION_PATH = "file:/path/to/your/local/files/";
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(FILE_LOCATION_URL)
.addResourceLocations(FILE_LOCATION_PATH);
}
}
- 创建一个控制器来处理文件预览:
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.nio.file.Path;
import java.nio.file.Paths;
@RestController
public class FilePreviewController {
@GetMapping("/file/{filename:.+}")
public ResponseEntity<Resource> serveFile(@PathVariable String filename) {
Path path = Paths.get(FILE_LOCATION_PATH).resolve(filename);
Resource resource = new UrlResource(path.toUri());
if (resource.exists() || resource.isReadable()) {
return ResponseEntity.ok().body(resource);
} else {
return ResponseEntity.notFound().build();
}
}
}
在这个例子中,当你访问http://yourdomain.com/files/yourfile.pdf
时,Spring Boot会从本地文件系统中的/path/to/your/local/files/
路径下寻找名为yourfile.pdf
的文件,并将其作为预览提供。注意,你需要根据实际情况配置FILE_LOCATION_PATH
。
确保你的Spring Boot应用有权限访问这些文件,并且考虑文件预览的安全性,例如限制访问或添加适当的身份验证和授权。
评论已关闭