아작스 이미지 업로드시

아작스 이미지 업로드시

QA

아작스 이미지 업로드시

본문

 

에디터에서 멀티업로드도 좋고 개별 업로드도 좋고 여튼 이미지를 업로드하는 틀을 만들때

wr_id 를 미리 받아와서 이미지 이름에다 붙이는 방법은 없을까요?

 

아무리 생각해도 wr_id 의 마지막값을 받아서 더하기 1을 한다고 해도 회원접속이 많거나 서버 속도 등등을 따지면 순번이 바뀔 수 있는 재수없는 상황이 생길 것 같아서요.

 

그래서 생각하는 것이 원래는

 

게시판명/wr_id_마이크로초.jpg 형태로 하려고 했는데(그래야 파일관리가 쉬움)

wr_id 를 못받아 오니까 게시판명/글쓴이아이디_마이크로초.jpg 로 만들고 최초글쓰기시에만 업뎃 후 다시

write 페이지로 돌아와서 업로드파일 중 wr_id 부분이 없고 본인아이디 부분이 있으면 그걸 리네임해버리고 뷰페이지로 넘어가는 수를 생각하고 있기는 한데...

 

wr_id 를 정확하게 미리 받는 좋은 방법 있으신 분 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 4

wr_id,wr_num만있는 (나머지 데이터는 비어있는) 행을 하나 미리 넣어놓고 wr_id받아온다음 글쓰기 완료시에 update하시면 안되나요?

음... 이럴 경우 wr_id 만 등록하고 완성글이 쓰여질 때까지의 시간 격차가 클 때에는
리스트페이지의 가장 상단부에 그 시간 동안 맹탕 게시글 하나가 올라가 있을 텐데...
그걸 글이 완성될 때까지 리스트에서 제외하는 로직이 또 하나 첨가되어야 하겠네요.
좋은 의견 감사합니다.

wr_id를 미리 받아오는것보다 

1. 마이크로초로 파일명을 만들어서 올리신후에

2. 글 저장이 완료된후에 wr_id가 나오면

3. 저장된 파일명을 wr_id마이크로초로 변경

하시는 방법이 맞을듯 합니다.

그건 뷰페이지에서 행해져야 하는 로직을 의미하는가요?
그럴 경우 예컨대 이미지를 올리고 에디터로 옮긴 후 이미지를 Delete 키 등으로 없애거나 잘라내기하면 wr_content 에는 이미지의 흔적이 남지 않아서 그런 이미지들은 뷰페이지에서 리네임을 할 수 없을 것 같단 생각이 듭니다. 그때 그 빈틈을 막는 로직은 따로 만들어야 하구요.
좋은 의견 감사합니다.

현재 말씀을 제가 제대로 이해한게 맞는지 잘 모르겠지만..

 

우선 보여지는 파일 업로드시 미리 보여지는 이미지는 말 그대로 업로드가 된게 아닌 현상이지요..

그래서 우선적으로 파일을 등록하는것은 따로 등록된게 아닙니다.

해서 php 로 DB Insert 나 Update 할 경우에 처해지는데요...

 

파일을 실제 저장하는 write_update.php 관련해서

$FileName = $_FILES['files']['name'][$i];

$FileName = preg_replace("/\.(c|h|sh|pl|py|php|phtm|htm|html|cgi|exe|jsp|jsf|asp|inc|jnlp|java|js|xml)$/i", "$0-x", $FileName);
$f_exe = explode(".",$FileName);
$f_exe_c = count($f_exe)-1;
$f_exes = $f_exe[$f_exe_c];

 

$newFileName = time()."_".$wr_id.".".$f_exes;

처럼 업로드 파일 명을 변경 한 후 

$new_dir = "파일 저장경로(절대경로)";

$uploadfile = $new_dir."/".$newFileName;

move_uploaded_file($_FILES['files']['tmp_name'][$i], $uploadfile);

 

로 하시면 변경된 데이터로 FTP 위치에 파일이 저장되며...

DB 인서트나 업데이트 시 filename = '{$newFileName }' 로 하시면 변경된 이름으로 저장되실겁니다.

 

 

글쓰기 페이지에는 hidden 타입으로 name=uid가 들어갑니다.

파일을 업로드할 때도 이 uid를 참조해 파일과 함께 전송하여 업로드 처리하고(uid를 파일명 앞에 붙여두면 되겠죠), 글이 저장될 때 uid를 받아 업로드된 파일의 이름을 바꾸는 등의 동작을 처리하면 됩니다.

 

uid는 get_uniqid() 함수로 생성된 시간 기반의 값입니다. 

 

스킨에 따라 uid 필드가 없거나 값이 없다면 get_uniqid() 함수로 값을 받아 채워넣으면 되겠죠.

답변을 작성하시기 전에 로그인 해주세요.
전체 59
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT