아작스 이미지 업로드시
본문
에디터에서 멀티업로드도 좋고 개별 업로드도 좋고 여튼 이미지를 업로드하는 틀을 만들때
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를 미리 받아오는것보다
1. 마이크로초로 파일명을 만들어서 올리신후에
2. 글 저장이 완료된후에 wr_id가 나오면
3. 저장된 파일명을 wr_id마이크로초로 변경
하시는 방법이 맞을듯 합니다.
현재 말씀을 제가 제대로 이해한게 맞는지 잘 모르겠지만..
우선 보여지는 파일 업로드시 미리 보여지는 이미지는 말 그대로 업로드가 된게 아닌 현상이지요..
그래서 우선적으로 파일을 등록하는것은 따로 등록된게 아닙니다.
해서 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() 함수로 값을 받아 채워넣으면 되겠죠.