https://dev-eunse.tistory.com/291 여기서 + db 저장해볼거임
create table img(
idx int not null auto_increment,
imgname varchar(200) not null,
imgurl text not null,
imgdate timestamp not null default current_timestamp,
primary key(idx)
);
요렇게 table 만듬
👀 cdn 이미지
🤷♂️❓
cdn
이미지 호스팅 서비스
Cloud
1. 일반 Cloud 형태로 구성 : docker를 사용하는 형태 (물리 형태)
Centos + mysql + JKD17 + tomcat + nginx
2. 가상 Cloud 형태로 구성 (VPC) : 가상 IP 할당 (논리 형태)
- cdn_upload.jsp : 어제꺼 그대루
- cdn_dto
@Data
@Entity
@Table(name="img")
@NoArgsConstructor
@AllArgsConstructor
public class cdn_dto {
@Id
private int idx;
private String imgname;
private String imgurl;
private String imgdate;
}
@Column 은 table 생성시에만 사용!
- cdn_repo.java (interface)
public interface cdn_repo extends JpaRepository<cdn_dto, Integer>{
@Query("select now()")
String mysql_times();
}
JpaRepository<dto class명 , primary key 속성 작성 (int는 안먹음)>
- Controller
@Autowired
cdn_repo cdn_repo;
cdn_dto dto;
//cdn 서버로 이미지 및 컨텐츠 파일 전송 메소드
@PostMapping("/cdn_uploadok.do")
public String cdn_uploadok(ServletResponse res,Model m,
@RequestParam(defaultValue="",required=false) String url,
MultipartFile mfile) {
res.setContentType("text/html;charset=utf-8");
FTPClient ftp = new FTPClient(); //FTP 접속 클라이언트 객체 생성
ftp.setControlEncoding("utf-8"); //한글파일 깨짐 방지
FTPClientConfig fc = new FTPClientConfig(); //FTP 접속 환경설정
try {
String filename = mfile.getOriginalFilename(); //업로드 파일명
String host = url; //FTP 호스트
String user = "admin"; //FTP 접속 아이디
String pw = "123123"; //FTP 접속 패스워드
int port = 20021; //FTP 접속 포트번호
ftp.configure(fc); //접속 환경을 새롭게 setting
ftp.connect(host,port); //FTP 서버에 접속
if(ftp.login(user, pw)) { //FTP 사용자에 맞게 접속 환경을 설정
//file이 binary가 아니고 text(ascii)면 에러남
//ftp.setFileType(FTP.ASCII_FILE_TYPE); //ascii 경우 (txt,html,css,css...)
ftp.setFileType(FTP.BINARY_FILE_TYPE); //이미지 , 동영상, PDF, XLS..
int result = ftp.getReplyCode(); //CDN서버에서 파일 업로드 지현형태 발생
System.out.println("지연코드 :" + result);
//FTP의 해당 디렉토리에 파일을 Stream 형태로 업로드
boolean ok = ftp.storeFile("/home/admin/cdn_upload_seeun/"+filename, mfile.getInputStream());
System.out.println(ok);
if(ok == true) {
//요부분 추가 - 파일 업로드 후 db에 저장
String fileurl = "http://172.30.1.16/cdn_upload_seeun/";
this.dto = new cdn_dto();
this.dto.setImgdate(filename);
this.dto.setImgurl(fileurl);
this.dto.setImgdate(cdn_repo.mysql_times());
try {//예외처리 필수
cdn_dto result2 = cdn_repo.save(this.dto); //db저장
System.out.println("정상적으로 cdn 서버로 파일 업로드 완료했습니다.");
}catch(Exception e) {
System.out.println("database 연결 실패 오류!");
}
}else {
System.out.println("CDN 파일 업로드 실패");
}
}else {
System.out.println("FTP ID 및 패스워드 오류 발생!");
}
}catch(Exception e) {
System.out.println("CDN 서버 접속 오류 발생!!");
}finally {
try {
ftp.disconnect(); //ftp 접속해제 필수
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
'CLASS > SPRINGBOOT' 카테고리의 다른 글
#10-3 / Ajax로 이미지 전송 및 JPA => 삭제 (0) | 2024.08.29 |
---|---|
#10-2 / Ajax로 이미지 전송 및 JPA (0) | 2024.08.28 |
#9-3 / CDN FTP 파일 업로드 사용법 (0) | 2024.08.27 |
#9-2 / Thymeleaf 부가사용 방법 (with , T, formatInteger.. ) (0) | 2024.08.27 |
#9-1 / JPA 5 - 회원가입 list paging (0) | 2024.08.27 |