NCP
이용신청 후
버킷 이름 : Bitcamp-9th-bucket-본인 계정 숫자
이클립스 클래스 파일 생성
imageboard.searvice
NCPObjectStorageService.java
NCPObjectStorageService.java 에 각각 입력
// projectMVC/src/main/java/imageboard/service/NCPObjectStorageService.java
package imageboard.service;
import java.io.File;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
public class NCPObjectStorageService {
private String accessKey = ""; // 여기에 입력
private String secretKey = ""; // 여기에 입력
private String regionName = "kr-standard";
private String endPoint = "https://kr.object.ncloudstorage.com";
....
원래는 이런 정보들 db.properties 에 넣어야함
*.jar 다운로드
다운로드 경로 D:\AWS-S3\lib
스프링에서 할때는 자동으로 의존성이 처리되지만, 여기서는 직접 jar를 넣어주어야 한다
다운로드 시작 ~
aws-java-sdk-s3
aws-java-sdk-core
commons-logging
jackson-databind
jackson-core
jackson-annotations
httpclient
httpcore
joda-time
jaxb-api
ImageboardWriteAjaxService.java 완성
버킷 이름 복사해서
ImageboardWriteAjaxService.java의
private String bucketName = "bitcamp-9th-bucket-116"; 에 작성
// projectMVC/src/main/java/imageboard/service/NCPObjectStorageService.java
package imageboard.service;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
public class NCPObjectStorageService {
private String accessKey = "본인 키 입력";
private String secretKey = "본인 키 입력";
private String regionName = "kr-standard";
private String endPoint = "https://kr.object.ncloudstorage.com";
final AmazonS3 s3;
public NCPObjectStorageService() {
s3 = AmazonS3ClientBuilder
.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endPoint, regionName))
.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey)))
.build();
}
public String uploadFile(String bucketName, String directoryPath, File file) {
// String fileName = file.getName(); - public void
String fileName = UUID.randomUUID().toString();
// UUID : 숫자 형식으로 파일명을 만들어줌; 같은 파일명을 올려도 다른 이름으로 계속 올라감
FileInputStream fileIn = null;
try {
fileIn = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
/* 정보 파일 잡기 */
ObjectMetadata objectMetadata = new ObjectMetadata();
// objectMetadata.setContentType("image/jpeg"); 이러면 귀찮음 for 문 써줘야함
Path path = Paths.get(file.getAbsolutePath());
String contentType = null;
try {
contentType = Files.probeContentType(path);
} catch (IOException e) {
e.printStackTrace();
}
objectMetadata.setContentType(contentType);
objectMetadata.setContentLength(file.length());
// putObjectRequest 생성해서 bucketName 에 directoryPath + fileName 이름으로 파일 불러들임
PutObjectRequest putObjectRequest =
new PutObjectRequest(bucketName,
directoryPath + fileName,
fileIn,
objectMetadata)
.withCannedAcl(CannedAccessControlList.PublicRead);
// Acl : 리소스에 대한 접근 권한
// 모든 사용자가 객체를 읽을 수 있지만, 수정과 삭제는 불가능
s3.putObject(putObjectRequest); // Object에 올리기
return fileName;
}
}
DB 삭제 시 에러 해결
DBeqver / WorckBench
LOCK 푸는 코드 입력
Set sql_safe_updates=0;
WorckBench
Set sql_safe_updates=0;
Object Storage 의 이미지 변경할 때
덮어쓰기 안됨
지우고 올려줘야 함
NCPObjectStorageService.java 에 deleteFile() 함수를 작성해줘야함
코드 참고
https://guide.ncloud-docs.com/docs/storage-storage-8-1 : 다양한 소스 제공
'Cloud > NCP' 카테고리의 다른 글
NCP 200 Dump (2) | 2024.12.02 |
---|---|
NCP 시험 개요 (2) | 2024.12.02 |
Naver Cloud Platform 교육 (3) | 2024.12.02 |
네이버 클라우드 Ununtu Server 생성 (0) | 2024.10.15 |
네이버 클라우드 서버 생성 (0) | 2024.09.26 |