정보보안 스터디 - 12주차 3일 - 파일 업로드 방법 연구
☞ 파일 업로드 방법 연구
☞ 방법1) DB에 BLOB파일로 업로드, 다운로드
일단 multipart/form-data 형식으로 파일을 업로드 시킵니다.
DB에 파일이 잘 업로드 되었습니다.
이미지 사이즈1은 가로세로 사이즈이고
사이즈2는 파일 크기입니다.
try, catch, throw 구문으로
오류가 났을 때 Exception() 알림 처리를 해줍니다.
파일이 있으면 function을 실행합니다.
만약 파일이 tmp디렉토리에 업로드된 상태이면
이미지의 정보를 받아와서 업로드를 합니다.
사이즈는 이미지의 가로세로 사이즈이고,
파일을 업로드 하기위해서 파일 오픈을 해줍니다.
사이즈가 초과되지 않으면 db에 연결을 시키고
DB에 업로드까지 시킵니다.
?에 변수를 연결시켜주는 방식으로 구현합니다.
업로드를 실행시키고,
Exception은 파일사이즈, 포맷 오류입니다.
이제 blob으로 저장된 파일을 다운 받을 차례입니다.
현재 bin파일, 즉 바이너리 파일로 저장된 파일을 이미지 형식으로 변경해서 다운받아야합니다.
일단 파일을 출력시키려면
해당 텍스트 파일로는 읽을 수 없는 바이너리를 base64로 변형 시켜 읽을 수 있게 만들어줍니다.
base64인코드를 시켜 이미지를 올리면 출력이 됩니다..
파일을 다운받으려면 웹브라우저에 헤더를 설정해줘야합니다.
가장 중요한 건 타입과 이미지 이름입니다.
bin파일을 이미지 확장자로만 바꿔주면 되는 개념입니다.
이미지 이름 설정을 안하면 php본문으로 다운받게 됩니다.
사이즈, 타입, 인코딩방식: 바이너리로 헤더를 설정하고 이미지를 다운받습니다.
☞ 방법2) 다른 외부 서버에 파일을 업로드합니다.
가능한 경우
1. 외부 http서버 경로로 업로드합니다.
2. scp로 파일 교환을 합니다.
3. ftp로 파일 교환을 합니다.
4. nfs서버로 마운트하여 폴더를 공유하고 파일을 교환합니다.
5. sshfs 스토리지에 파일을 올립니다.
scp 파일 공유
docker의 컨테이너는 systemctl 명령어를 실행시켜야하기 때문에 다음과 같이 실행시킵니다.
컨테이너 centos안에서 레포지터리를 수동으로 설정해주고
업데이트 및 openssh, vsftpd를 다운받습니다.
서버를 실행시켜주고
scp의 경우 ssh를 설치하면 기본으로 깔리며 같은 포트를 사용합니다.
원격으로 디렉토리에 파일을 업로드/다운 받습니다.
가능한 방법은 많겠지만
php에서 ftp 코드 지원이 되기 때문에
다음시간에는 ftp로 해보겠습니다.