Q&A

이 답변 쉽게 설명해주실분 계신가요?ㅠㅠ

2019.04.02 02:07
519
0
CMS/프레임워크 Rhymix 1.9
개발 언어 PHP 7.3
문제 페이지 주소 비공개 (작성 후 5일 경과)

아래 첨부파일 확장자를 대문자에서 소문자로 자동변경하는 글을올렸는데 xe사이트에서 답변을 찾은것 같습니다

그런데 저같은 초짜는 이해하기 힘든 답변이네요 처음 부분은 이해하겠는데 나머지 부분을 모르겠어요ㅠㅠ

xe\modules\file\file.controller.php에서 523라인에 추가하는거 까지는 이해하겠는데 나머진 모르겠어요

쉽게 설명해주실분 계신가요? 이곳은 능력자분들이 많으신거같은데 말이죠 아래는 답변내용입니다

 

 

 

파일 업로드할때 확장자가 대문자인 경우 자동으로 소문자로 변경하도록 해서 해결했습니다.


수정할 파일 : xe\modules\file\file.controller.php

수정할 함수 : function insertFile() (XE 1.5 기준 523라인입니다.)

추가할 내용 :

$tmp_file_info = pathinfo($file_info['name']);

$change_filename = $tmp_file_info['filename'];

$change_ext = $tmp_file_info['extension'];

$file_info['name'] = $change_filename.".".strtolower($change_ext);


첨부파일이 한글일때 pathinfo함수에 문제가 약간 있군요~

function filePath($filePath) {
    $fileParts = pathinfo($filePath);
    if (($s = strrpos($filePath, '/')) !== false) $s++;
    if (($e = strrpos($filePath, '.') - $s) !== strlen($fileParts['filename'])) {
        $fileParts['filename'] = substr($filePath, $s, $e);
        $fileParts['basename'] = substr($filePath, $s);
    }
    return $fileParts;
}


이 함수를 선언해주시고

$tmp_file_info = pathinfo($file_info['name']); -> $tmp_file_info = filePath($file_info['name']);

 

참고로 filePath함수를 fileController class 밖에다 선언해야 적용이 되더라구요~


$this->filePath 로 하면 class 내부에 넣어도 되네요~ ㅋ

댓글 5

  • 2019.04.02 02:17 #1203512
    말 그대로.. file.controller.php 에서 function insertFile() 식으로 선언되어있는 함수를 찾으세요.
    그 후, { } 안에
    $tmp_file_info = pathinfo($file_info['name']);

    $change_filename = $tmp_file_info['filename'];

    $change_ext = $tmp_file_info['extension'];

    $file_info['name'] = $change_filename.".".strtolower($change_ext);

    넣으라는 겁니다.
  • 2019.04.02 03:42 #1203576
    아하 그렇군요 도전해보겠습니다ㅠㅠ
  • 2019.04.02 02:25 #1203526

    function insertFile()
    함수안에 추가할 내용을 넣으면 되는데
    $tmp_file_info = pathinfo($file_info['name']);
    $change_filename = $tmp_file_info['filename'];
    $change_ext = $tmp_file_info['extension'];
    $file_info['name'] = $change_filename.".".strtolower($change_ext);
    이 내용을 $file_info 선언된 다음 줄에 넣으면되요.

    근데 추가하는 코드중 첫줄에 해당 파일이 한글 이름일경우 문제가 발생되는 부분이 있다고..

    funtion insertFile()바로 윗줄 빈공간에

    function filePath($filePath) {
    $fileParts = pathinfo($filePath);
    if (($s = strrpos($filePath, '/')) !== false) $s++;
    if (($e = strrpos($filePath, '.') - $s) !== strlen($fileParts['filename'])) {
    $fileParts['filename'] = substr($filePath, $s, $e);
    $fileParts['basename'] = substr($filePath, $s);
    }
    return $fileParts;
    }

    이코드를 넣고,

    추가한 파일 첫줄 $tmp_file_info = pathinfo($file_info['name']); 이 코드를


    $tmp_file_info = $this->filePath($file_info['name']);

    일케 쓰라는 말입니다.

     

    말그대로인데 이걸 이해하지 못하시면 계속 이해못하실 것 같아요.

  • 2019.04.02 03:43 #1203581
    설명해주신대로 해보니 잘됩니다 감사합니다 괜히 파일 꼬일까봐 걱정했는데 한번에 되니 허무하네요 감사드립니다 :)
  • 2019.04.02 03:47 #1203585
    이렇게 코어를 하나씩 수정할때 코어 업데이트가 스트레스가 될 수 있습니다. 차라리 사용하는 모듈을 고치는 질문을 하셔서 고치시는걸 추천해 드립니다.

    코어를 수정하지 않는 원칙을 지키면 운영에 어려움이 줄어들고 관리가 쉽고 편리해집니다.