This commit is contained in:
@@ -17,6 +17,7 @@ import ru.soune.nocopy.entity.file.ImageHashEntity;
|
|||||||
import ru.soune.nocopy.entity.user.User;
|
import ru.soune.nocopy.entity.user.User;
|
||||||
import ru.soune.nocopy.exception.DuplicateImageException;
|
import ru.soune.nocopy.exception.DuplicateImageException;
|
||||||
import ru.soune.nocopy.repository.*;
|
import ru.soune.nocopy.repository.*;
|
||||||
|
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.File;
|
||||||
@@ -41,6 +42,8 @@ public class FileSimilarityService {
|
|||||||
|
|
||||||
private final FileEntityRepository fileEntityRepository;
|
private final FileEntityRepository fileEntityRepository;
|
||||||
|
|
||||||
|
private final CloudStorageService cloudStorageService;
|
||||||
|
|
||||||
@Value("${server.baseurl}")
|
@Value("${server.baseurl}")
|
||||||
private String baseUrl;
|
private String baseUrl;
|
||||||
|
|
||||||
@@ -198,8 +201,9 @@ public class FileSimilarityService {
|
|||||||
|
|
||||||
private String calculateFileHash(String path) throws Exception {
|
private String calculateFileHash(String path) throws Exception {
|
||||||
MessageDigest digest = MessageDigest.getInstance("SHA-256");
|
MessageDigest digest = MessageDigest.getInstance("SHA-256");
|
||||||
|
File file = cloudStorageService.readFileFromStorageByPath(path);
|
||||||
|
|
||||||
try (InputStream is = new FileInputStream(path)) {
|
try (InputStream is = new FileInputStream(file)) {
|
||||||
byte[] buffer = new byte[8192];
|
byte[] buffer = new byte[8192];
|
||||||
int read;
|
int read;
|
||||||
while ((read = is.read(buffer)) > 0) {
|
while ((read = is.read(buffer)) > 0) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import ru.soune.nocopy.entity.file.FileEntity;
|
import ru.soune.nocopy.entity.file.FileEntity;
|
||||||
import ru.soune.nocopy.entity.file.ImageHashEntity;
|
import ru.soune.nocopy.entity.file.ImageHashEntity;
|
||||||
import ru.soune.nocopy.repository.ImageHashRepository;
|
import ru.soune.nocopy.repository.ImageHashRepository;
|
||||||
|
import ru.soune.nocopy.service.file.cloud.CloudStorageService;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -22,8 +23,10 @@ public class ImageHashService {
|
|||||||
|
|
||||||
private final ImageHashRepository repository;
|
private final ImageHashRepository repository;
|
||||||
|
|
||||||
|
private final CloudStorageService cloudStorageService;
|
||||||
|
|
||||||
public Map<String, Long> calculateHash(Path imagePath) throws IOException {
|
public Map<String, Long> calculateHash(Path imagePath) throws IOException {
|
||||||
File file = imagePath.toFile();
|
File file = cloudStorageService.readFileFromStorageByPath(imagePath.toString());
|
||||||
|
|
||||||
PHash pHash = PerceptualHashHelper.INSTANCE.generateDCTPerceptualHash(file);
|
PHash pHash = PerceptualHashHelper.INSTANCE.generateDCTPerceptualHash(file);
|
||||||
|
|
||||||
|
|||||||
@@ -333,7 +333,8 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
fileSimilarityService.hasDuplicatesByHash(finalFilePath ,session.getFileType(),
|
fileSimilarityService.hasDuplicatesByHash(finalFilePath ,session.getFileType(),
|
||||||
session.getUserId());
|
session.getUserId());
|
||||||
|
|
||||||
File file = new File(finalFilePath);
|
// File file = new File(finalFilePath);
|
||||||
|
File file = cloudStorageService.readFileFromStorageByPath(finalFilePath);
|
||||||
|
|
||||||
if (session.getFileType().startsWith("audio") && !isWavFile(file)) {
|
if (session.getFileType().startsWith("audio") && !isWavFile(file)) {
|
||||||
session.setStatus(UploadStatus.FAILED);
|
session.setStatus(UploadStatus.FAILED);
|
||||||
@@ -389,7 +390,7 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
fileEntity.getFilePath());
|
fileEntity.getFilePath());
|
||||||
|
|
||||||
if (status != FileStatus.TEMP) {
|
if (status != FileStatus.TEMP) {
|
||||||
FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity);
|
FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity, session.getConvertTo());
|
||||||
|
|
||||||
noCopyFileService.addFile(fileInfo);
|
noCopyFileService.addFile(fileInfo);
|
||||||
}
|
}
|
||||||
@@ -532,6 +533,7 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
private void checkForDuplicatesSynchronously(String filePath)
|
private void checkForDuplicatesSynchronously(String filePath)
|
||||||
throws IOException , DuplicateImageException {
|
throws IOException , DuplicateImageException {
|
||||||
Path path = Paths.get(filePath);
|
Path path = Paths.get(filePath);
|
||||||
|
|
||||||
Map<String, Long> hash = imageHashService.calculateHash(path);
|
Map<String, Long> hash = imageHashService.calculateHash(path);
|
||||||
|
|
||||||
List<SimilarImageProjection> duplicates = fileSimilarityService.findDuplicatedByHash(
|
List<SimilarImageProjection> duplicates = fileSimilarityService.findDuplicatedByHash(
|
||||||
|
|||||||
Reference in New Issue
Block a user