This commit is contained in:
@@ -19,8 +19,6 @@ import ru.soune.nocopy.exception.FileEntityNotFoundException;
|
||||
import ru.soune.nocopy.repository.FileEntityRepository;
|
||||
import ru.soune.nocopy.repository.FileMonitoringRepository;
|
||||
import ru.soune.nocopy.repository.UserRepository;
|
||||
import ru.soune.nocopy.service.FileSimilarityService;
|
||||
import ru.soune.nocopy.service.ImageHashService;
|
||||
import ru.soune.nocopy.service.file.cloud.CloudStorageService;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -9,12 +9,14 @@ import ru.soune.nocopy.repository.FileEntityRepository;
|
||||
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
|
||||
import software.amazon.awssdk.auth.credentials.AwsCredentials;
|
||||
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
|
||||
import software.amazon.awssdk.core.ResponseBytes;
|
||||
import software.amazon.awssdk.core.sync.RequestBody;
|
||||
import software.amazon.awssdk.core.sync.ResponseTransformer;
|
||||
import software.amazon.awssdk.http.apache.ApacheHttpClient;
|
||||
import software.amazon.awssdk.regions.Region;
|
||||
import software.amazon.awssdk.services.s3.S3Client;
|
||||
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
|
||||
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
|
||||
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
|
||||
|
||||
import java.io.File;
|
||||
@@ -23,6 +25,7 @@ import java.io.InputStream;
|
||||
import java.net.URI;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.UUID;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@@ -86,6 +89,29 @@ public class CloudStorageService {
|
||||
log.error("Failed to read file: {}", filePath, e);
|
||||
}
|
||||
}
|
||||
//
|
||||
// public File readFileFromStorageByPath(String filePath) throws IOException {
|
||||
// GetObjectRequest objectRequest = GetObjectRequest.builder()
|
||||
// .bucket(bucket)
|
||||
// .key("files" + filePath)
|
||||
// .build();
|
||||
// AwsCredentials credentials = AwsBasicCredentials.create(key, secretKey);
|
||||
//
|
||||
// S3Client s3Client = S3Client.builder()
|
||||
// .httpClient(ApacheHttpClient.create())
|
||||
// .region(Region.of(region))
|
||||
// .endpointOverride(URI.create(s3endpoint))
|
||||
// .credentialsProvider(StaticCredentialsProvider.create(credentials))
|
||||
// .build();
|
||||
//
|
||||
// String tempDir = System.getProperty("java.io.tmpdir");
|
||||
// String fileName = filePath.replace("/", "_");
|
||||
// File tempFile = new File(tempDir, fileName);
|
||||
//
|
||||
// s3Client.getObject(objectRequest, tempFile.toPath());
|
||||
//
|
||||
// return tempFile;
|
||||
// }
|
||||
|
||||
public File readFileFromStorageByPath(String filePath) throws IOException {
|
||||
GetObjectRequest objectRequest = GetObjectRequest.builder()
|
||||
@@ -102,14 +128,43 @@ public class CloudStorageService {
|
||||
.build();
|
||||
|
||||
String tempDir = System.getProperty("java.io.tmpdir");
|
||||
String fileName = filePath.replace("/", "_");
|
||||
|
||||
String fileName = System.currentTimeMillis() + "_" + UUID.randomUUID() + "_" +
|
||||
filePath.replace("/", "_");
|
||||
File tempFile = new File(tempDir, fileName);
|
||||
|
||||
s3Client.getObject(objectRequest, tempFile.toPath());
|
||||
|
||||
tempFile.deleteOnExit();
|
||||
|
||||
return tempFile;
|
||||
}
|
||||
|
||||
public byte[] readFileFromStorageBytes(String filePath) {
|
||||
AwsCredentials credentials = AwsBasicCredentials.create(key, secretKey);
|
||||
|
||||
S3Client s3Client = S3Client.builder()
|
||||
.httpClient(ApacheHttpClient.create())
|
||||
.region(Region.of(region))
|
||||
.endpointOverride(URI.create(s3endpoint))
|
||||
.credentialsProvider(StaticCredentialsProvider.create(credentials))
|
||||
.build();
|
||||
|
||||
GetObjectRequest objectRequest = GetObjectRequest.builder()
|
||||
.bucket(bucket)
|
||||
.key("files" + filePath)
|
||||
.build();
|
||||
|
||||
try {
|
||||
ResponseBytes<GetObjectResponse> responseBytes = s3Client.getObjectAsBytes(objectRequest);
|
||||
return responseBytes.asByteArray();
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to read file from S3: {}", filePath, e);
|
||||
throw new RuntimeException("Failed to read file from S3", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public InputStream readFileFromStorage(String filePath) {
|
||||
GetObjectRequest objectRequest = GetObjectRequest.builder()
|
||||
.bucket(bucket)
|
||||
|
||||
Reference in New Issue
Block a user