질문 Q #11692
CI 이미지 업로드 관련하여 업로드 경로 설정하는 것에 대해서 질문이 있습니다.
해달봉 2014-10-15 15:20:11
안녕하세요. 선배님들!
CI에 이미지 업로드 관련하여 업로드 경로 설정하는것에 대해서 질문이 있습니다.

현재 이미지 업로드 경로는 ex) http://test.img.com/share/  이런식으로 다른 img를 저장하는 서버가 있습니다.
그렇기 때문에 업로드를 하면 test.img.com/share 폴더 하위에 생기도록 소스를 짜놓았습니다.

※ 개발하는 경로랑 이미지 저장 경로는 다릅니다.

이미지 저장 경로는 절대경로로 선언 해놓은 상태입니다.
$sPath = 'http://test.img.com/share/'.date('Y').'/'.date('m').'/'.date('d')';

 $sTemp = trim($sPath);
        if ( ! is_dir($sTemp)) {
            mkdir($sTemp,0777, true);
        }

소스는 이렇습니다. 이미지 저장 시 해당 디렉토리가 없으면 년/월/일로 만들어주거든요.,,,

잘 될거라 생각하고 업로드를 해보니

<pre>Array
(
    [status] => error
    [data] => Array
        (
            [image_error] => 업로드 경로가 유효한 것으로 보이지 않습니다.
        )

)

이런 에러가 발생합니다. 뭐 보이다 싶이 경로가 잘못 된것 같은데.. URL이 다른 곳에 저장을 할려면 절대 경로로 하는게 맞지 않나요?...흠..
답변 3
#1 들국화 2014-10-15 15:26:32
같은 컴퓨터에서만 접근 가능 합니다.
아니면 해당 웹서버에서 접근 할수 있도록 NFS같을결로라도 연결을 해줘야 합니다.
쉽게 애기하면 cd 로 들어갈수 있어야 합니다.
일반적으로 로컬에 저장을 하고 여러가지 방법으로 copy or move 해 줍니다.
#2 변종원(웅파) 2014-10-15 17:00:30
$sPath = '/share/'.date('Y').'/'.date('m').'/'.date('d')';

이런식으로 처리되어야 합니다. 웹주소로 저장이 되면 모든 서버를 해킹할 수 있죠. ^^
#3 CI_ORL 2014-10-15 17:52:30
$t = time();
$Y = date("Y",$t);
$m = date("m",$t);
$d = date("d",$t);
$sPath = '/share/'.$Y.'/'.$m.'/'.$d.'/';
아닐까요? ㅎ
저두 이미지 올릴때 time() 이름 설정 했더니, 밀리터리초 단위에서 뒤틀린 덕에...
알게 된 내용인데요...

가장 위험한 부분이 2014년 12월 31일 11시 59분에 59초 999999 에 업로드하다가 date('d') 처리할때 1로 바뀌면,
우리가 생각하는 /2015/1/1/ 폴더가 아닌 /2014/12/1/ 폴더로 직행한다는 사실!!

매우 중요함...
그냥 겪어 본 일이라... 끄적 거렸어요...