若依 ruoyi-vue 接口挂载获取Resources静态资源文件权限校验

发布于:2024-04-04 ⋅ 阅读:(178) ⋅ 点赞:(0)

解决小程序图片打包过大,放置后端,不引用ngnix、minio等组件,还能进行权限校验

在这里插入图片描述

@RestController
@RequiredArgsConstructor
@RequestMapping("/train/static")
public class StaticResourcesController extends BaseController {

    @Autowired
    private ResourceLoader resourceLoader;

    @GetMapping("/{fileName}")
    public void getStaticResources(@PathVariable String fileName, HttpServletResponse response) throws IOException {
        Resource resource = resourceLoader.getResource("classpath:static/train/" + fileName);
        if (resource.exists()) {
            response.setContentType(FileUtils.getContentType(resource.getFilename()));
            FileUtils.writeBytes(resource.getURI().getPath(), response.getOutputStream());
        }
    }
    
}
  /**
     * 根据文件名,设置HttpServletResponse的ContentType
     *
     * @param fileName 文件名
     * @return 结果
     * @author weimingzhong
     * @date 2024/4/3 9:50
     */
    public static String getContentType(String fileName) {
        String fileExtension = getFileExtension(fileName);
        switch (fileExtension) {
            case "png":
                return MediaType.IMAGE_PNG_VALUE;
            case "jpg":
            case "jpeg":
                return MediaType.IMAGE_JPEG_VALUE;
            case "gif":
                return MediaType.IMAGE_GIF_VALUE;
            case "pdf":
                return MediaType.APPLICATION_PDF_VALUE;
            // Add more cases for other file types if needed
            default:
                return MediaType.APPLICATION_OCTET_STREAM_VALUE; // Default to octet-stream
        }
    }

    private static String getFileExtension(String fileName) {
        int dotIndex = fileName.lastIndexOf(".");
        if (dotIndex > 0 && dotIndex < fileName.length() - 1) {
            return fileName.substring(dotIndex + 1).toLowerCase();
        } else {
            return "";
        }
    }

网站公告

今日签到

点亮在社区的每一天
去签到