diff --git a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java index ef671fb..0228914 100644 --- a/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java +++ b/src/main/java/ru/soune/nocopy/service/file/FileEntityService.java @@ -22,6 +22,7 @@ import ru.soune.nocopy.repository.UserRepository; import ru.soune.nocopy.service.file.cloud.CloudStorageService; import java.io.IOException; +import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.file.Files; import java.nio.file.Path; @@ -240,11 +241,18 @@ public class FileEntityService { String extension = determineFileExtension(fileExt, fileEntity); Path protectedFilePath = prepareProtectedPath(fileEntity, extension); - if (Files.exists(protectedFilePath)) { - Files.delete(protectedFilePath); - } + Files.createDirectories(protectedFilePath.getParent()); - try (FileChannel channel = FileChannel.open(protectedFilePath, StandardOpenOption.WRITE)) { + Files.deleteIfExists(protectedFilePath); + + try (FileChannel channel = FileChannel.open(protectedFilePath, + StandardOpenOption.CREATE, + StandardOpenOption.WRITE)) { + + ByteBuffer buffer = ByteBuffer.wrap(data); + while (buffer.hasRemaining()) { + channel.write(buffer); + } channel.force(true); } diff --git a/src/main/java/ru/soune/nocopy/service/file/impl/ProtectionFileProviderImpl.java b/src/main/java/ru/soune/nocopy/service/file/impl/ProtectionFileProviderImpl.java index 065dc44..65b4bda 100644 --- a/src/main/java/ru/soune/nocopy/service/file/impl/ProtectionFileProviderImpl.java +++ b/src/main/java/ru/soune/nocopy/service/file/impl/ProtectionFileProviderImpl.java @@ -119,6 +119,7 @@ public class ProtectionFileProviderImpl implements FileProtector.FileProvider { FileEntity fileEntity = fileEntityService.writeProtectedFile(id, data, fileExt); Path filePath = Paths.get(fileEntity.getProtectedFilePath()); + if (!Files.exists(filePath)) { log.error("File not found after write: {}", filePath); return OperationResult.Companion.failure("File not found"); @@ -171,45 +172,6 @@ public class ProtectionFileProviderImpl implements FileProtector.FileProvider { @Override public @NotNull OperationResult writeDocumentFile(@NotNull String id, @NotNull byte[] data) { try { - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); - log.info("SAVE DOCUMENT"); FileEntity fileEntity = fileEntityService.writeProtectedFile(id, data, null); cloudStorageService.saveFilesToStorage(fileEntity.getMimeType(), fileEntity.getFileExtension(),