package com.yice.webadmin.app.util;

import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;

import java.io.IOException;
import java.nio.file.Paths;
import java.util.Optional;

public class FileUtil {
    public static ResponseEntity<Resource> getFileByUrl(String url) throws IOException {
        Resource resource = new UrlResource(Paths.get(url).toUri()); // 使用UrlResource从文件路径构建一个Resource对象
        Optional<Resource> optionalResource = Optional.ofNullable(resource);
        if (optionalResource.isPresent() && optionalResource.get().exists()) { // 检查文件是否存在
            HttpHeaders headers = new HttpHeaders(); // 构建HTTP响应头
            headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\""); // 设置内容类型为附件，并指定文件名
            headers.setContentType(MediaType.TEXT_PLAIN); // 设置内容类型为JSON
            return ResponseEntity.ok() // 返回200 OK状态码
                    .headers(headers) // 设置响应头
                    .contentLength(resource.contentLength()) // 设置响应内容长度（可选）
                    .body(resource); // 将Resource对象作为响应的主体返回
        } else {
            return ResponseEntity.notFound().build(); // 如果文件不存在，返回404 Not Found状态码
        }
    }
}
