[File] 로컬에서 -> api서버에서 다운로드 가능하게 추가

This commit is contained in:
2026-03-10 16:49:27 +09:00
parent 961ea80060
commit bb8f6d27f1
2 changed files with 22 additions and 2 deletions
@@ -200,7 +200,7 @@ public class FileController {
return ResponseEntity.notFound().build();
}
if (fileService.isRedirectMode()) {
if (fileService.isRedirectMode() || fileService.isLocalTestRequest(request)) {
return ResponseEntity.status(HttpStatus.FOUND)
.location(URI.create(fileService.buildPublicViewUrl(target.getSavePath())))
.build();
@@ -240,7 +240,7 @@ public class FileController {
return ResponseEntity.notFound().build();
}
if (fileService.isRedirectMode()) {
if (fileService.isRedirectMode() || fileService.isLocalTestRequest(request)) {
return ResponseEntity.status(HttpStatus.FOUND)
.location(URI.create(fileService.buildPublicDownloadUrl(target.getSavePath())))
.build();
@@ -3,6 +3,7 @@ package com.alist.api.common.modules.file.service;
import com.alist.api.common.modules.file.dto.*;
import com.alist.api.common.modules.file.mapper.FileMapper;
import com.alist.api.config.jwt.JwtTokenProvider;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.HashOperations;
@@ -695,4 +696,23 @@ public class FileService {
return baseUrl + prefix + savePath;
}
public boolean isLocalTestRequest(HttpServletRequest request) {
return containsLocalhost(request.getHeader("Referer"))
|| containsLocalhost(request.getHeader("Origin"))
|| containsLocalhost(request.getHeader("Host"))
|| containsLocalhost(request.getHeader("X-Forwarded-Host"));
}
public boolean containsLocalhost(String value) {
if (value == null || value.isBlank()) {
return false;
}
String lower = value.toLowerCase();
return lower.contains("localhost")
|| lower.contains("127.0.0.1")
|| lower.contains("[::1]")
|| lower.contains("::1");
}
}