dev delete check file on disk
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-04-21 02:21:33 +07:00
parent 3b68b3337c
commit fdc17b8325
@@ -22,13 +22,10 @@ import ru.soune.nocopy.service.file.ZipService;
import ru.soune.nocopy.service.file.cloud.CloudStorageService; import ru.soune.nocopy.service.file.cloud.CloudStorageService;
import ru.soune.nocopy.util.FileUtil; import ru.soune.nocopy.util.FileUtil;
import java.io.File; import java.io.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
@@ -58,17 +55,12 @@ public class FileController {
private CloudStorageService cloudStorageService; private CloudStorageService cloudStorageService;
@GetMapping("/public/{fileId}") @GetMapping("/public/{fileId}")
public ResponseEntity<Resource> getPublicFile(@PathVariable String fileId) { public ResponseEntity<InputStreamResource> getPublicFile(@PathVariable String fileId) {
try { try {
FileEntity fileEntity = fileRepository.findById(fileId) FileEntity fileEntity = fileRepository.findById(fileId)
.orElseThrow(() -> new FileNotFoundException("Not found: " + fileId)); .orElseThrow(() -> new FileNotFoundException("Not found: " + fileId));
File file = cloudStorageService.readFileFromStorageByPath(fileEntity.getFilePath()); InputStream inputStream = cloudStorageService.readFileFromStorage(fileEntity.getFilePath());
if (file == null || !file.exists()) {
log.error("File not found in storage: {}", fileEntity.getFilePath());
return ResponseEntity.notFound().build();
}
MediaType mediaType = getMediaType(fileEntity); MediaType mediaType = getMediaType(fileEntity);
@@ -76,19 +68,17 @@ public class FileController {
.filename(fileEntity.getOriginalFileName(), StandardCharsets.UTF_8) .filename(fileEntity.getOriginalFileName(), StandardCharsets.UTF_8)
.build(); .build();
InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
return ResponseEntity.ok() return ResponseEntity.ok()
.contentType(mediaType) .contentType(mediaType)
.contentLength(file.length())
.header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString()) .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString())
.header(HttpHeaders.CACHE_CONTROL, "public, max-age=3600") .header(HttpHeaders.CACHE_CONTROL, "public, max-age=3600")
.body(resource); .body(new InputStreamResource(inputStream));
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
log.warn("Not on disk: {}", fileId); log.warn("File not found in DB: {}", fileId);
return ResponseEntity.notFound().build(); return ResponseEntity.notFound().build();
} catch (IOException e) { } catch (Exception e) {
log.error("Read file exception: {}", fileId, e); log.error("Error reading file: {}", fileId, e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
} }
} }