//package com.backendsys.controller.Upload;
//
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.core.io.InputStreamResource;
//import org.springframework.core.io.Resource;
//import org.springframework.http.*;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.PathVariable;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.io.*;
//import java.nio.charset.StandardCharsets;
//import java.util.Arrays;
//
///**
// * 下载本地文件
// */
//@RestController
//public class ResourceController {
//
//    @Value("${file.upload.directory}") // 配置保存文件的目录
//    private String uploadDirectory;
//
//    // 判断文件是否为图片文件
//    private boolean isImageFile(File file) {
//        String extension = getExtension(file.getName());
//        return Arrays.asList("jpg", "jpeg", "png", "gif").contains(extension.toLowerCase());
//    }
//
//    // 获取图片文件对应的MediaType
//    private MediaType getImageMediaType(File file) {
//        String extension = getExtension(file.getName());
//        switch (extension.toLowerCase()) {
//            case "jpg":
//            case "jpeg": return MediaType.IMAGE_JPEG;
//            case "png": return MediaType.IMAGE_PNG;
//            case "gif": return MediaType.IMAGE_GIF;
//            default: return MediaType.APPLICATION_OCTET_STREAM;
//        }
//    }
//
//    public static String getExtension(String filename) {
//        if (filename == null) { return ""; }
//        int dotIndex = filename.lastIndexOf(".");
//        if (dotIndex > 0 && dotIndex < filename.length() - 1) {
//            return filename.substring(dotIndex + 1);
//        }
//        return "";
//    }
//
//    @GetMapping("/uploads/{folder}/{filename:.+}")
//    public ResponseEntity<Resource> serveFile(@PathVariable String folder, @PathVariable String filename) throws IOException {
//
//        File file = new File(uploadDirectory + folder + "/" + filename);
//        // 如果是图片，则直接显示；如果是文件，则是下载
//        HttpHeaders headers = new HttpHeaders();
//        if (isImageFile(file)) {
//            // 如果是图片文件，设置Content-Type为对应的图片MIME类型
//            headers.setContentType(getImageMediaType(file));
//        } else {
//            // 如果不是图片文件，设置Content-Disposition以附件形式下载
//            headers.setContentDisposition(ContentDisposition.attachment().filename(file.getName()).build());
//            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//        }
//        if (!file.exists()) {
//            String message = "图片不存在";
//            InputStream inputStream = new ByteArrayInputStream(message.getBytes(StandardCharsets.UTF_8));
//            InputStreamResource resource = new InputStreamResource(inputStream);
//            return ResponseEntity.status(HttpStatus.NOT_FOUND)
//                .contentType(MediaType.valueOf("text/plain; charset=UTF-8"))
//                .body(resource);
//        }
//        InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
//        return ResponseEntity.ok()
//            .headers(headers)
//            .contentLength(file.length())
//            //.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getName() + "\"")
//            //.contentType(MediaType.APPLICATION_OCTET_STREAM)
//            .body(resource);
//    }
//}
