이미지 업로드!! 제발 도와주세요. > 그누3질답

그누3질답

이미지 업로드!! 제발 도와주세요. 정보

그누보드 이미지 업로드!! 제발 도와주세요.

첨부파일

gbform.skin.php (32.5K) 1회 다운로드 2004-12-24 14:10:45

본문

며칠전에도 똑같은 글을 올렸는데 그냥 읽어 보시기만 하더라고요.

고수님들 제발 도와주세요.

아래 링크에서 얻은 스킨을 이용해 사용하는데 왜 jpg 만 업로드가 될까여? 기타 이외의 파일을 업로드 하는 방법은 없나요?

잘 하시는 분들 부탁 드립니다.

아래 소스는 gbform.skin.php 파일의 밑에 해당하는 자바스크립트 부분인데 이부분에서 수정을 할꺼 같아 올립니다.

그리고 첨부 파일에는 gbform.skin.php있으니 제발 도와 주세요.

그리고 이 스킨의 원래 출처는

http://www.sir.co.kr/?doc=bbs/gnuboard.php&bo_table=skin3&sselect=ca_id&stext=&page=2&wr_id=8525 

입니다,
---------------------------------------------------
<script language='Javascript'>

    var f = document.fgbform;

    if (f.w.value == "")
        AddFile(5);
    else
    {
        <?
        $sql = " select max(wf_id) from $file_table where wr_id = '$wr_id' ";
        $row = sql_fetch($sql);
        $num = $row[0];

        $sql = " select * from $file_table
                  where wr_id = '$wr_id'
                  order by wf_id ";
        $result = sql_query($sql);
        ?>
        AddFile(<?=$num+1?>);
        <?
        for ($i=0; $i<=$num; $i++)
        {
            $row = mysql_fetch_array($result);
            if (!$row[0])
                continue;

            //if ($w == "u") echo "f.elements['wf_id_del[$row[wf_id]]'].value = '$row[wf_id]';\n";

            echo "f.elements['wf_cont[$row[wf_id]]'].value = '".addslashes($row[wf_cont])."';\n";

            $file_name = get_thumb_filename($wr_id, $row[wf_id]);
            $file = "./data/file/$bo_table/{$file_name}_s.jpg";
            if (file_exists($file))
            {
                echo "document.images['preview[$row[wf_id]]'].src = '$file';\n";
                echo "document.images['preview[$row[wf_id]]'].style.display = '';\n";
            }
        }
        ?>
    }

    if (f.w.value == '' && typeof(f.wr_name) != 'undefined') {
        f.wr_name.focus();
    } else if (f.w.value == 'u') {
        f.wr_subject.focus();
        if (typeof(f.ca_id) != 'undefined') {
            f.ca_id.value = '<?=$ca_id?>';
        }
    }

    function fgbform_check(f)
    {
        var count = 0;

        for (i=0; i<input_idx; i++)
        {
            if (f.elements["wf_file["+i+"]"].value.match(/(.jpg|.jpeg)$/i))
                count++;
            else
            {
                if (f.elements["wf_file["+i+"]"].value != "")
                {
                    alert(f.elements["wf_file["+i+"]"].value + "\n\n이미지 파일이 아니거나 jpg 파일이 아닙니다.\n\njpg 파일만 올릴 수 있습니다.");
                    f.elements["wf_file["+i+"]"].select();
                    f.elements["wf_file["+i+"]"].focus();
                    return false;
                }
            }

            // 내용 검색에 나오게 하기 위하여 내용을 합침
            f.wr_content.value += f.elements["wf_cont["+i+"]"].value;
        }

        // 입력일 경우에만 물어봄
        if (f.w.value == '' && !count)
        {
            if (!confirm("이미지를 하나도 선택하지 않았습니다.\n\n그대로 입력하시겠습니까?"))
                return false;
        }

        // 저장버튼을 없앤다
      // btn_hidden.style.display = 'none';

      // return true;
    }
</script>

댓글 전체

if (f.elements["wf_file["+i+"]"].value.match(/(.jpg|.jpeg)$/i))  <--- 이 부분을
if (f.elements["wf_file["+i+"]"].value.match(/(.jpg|.jpeg|.gif|.png)$/i))  <-- 이렇게 고치면 될것 같은데...
문제는 저장시 뿐만아니라 출력시에도 체크해 보셔야 할 것 같네요!
음.. 위 링크를 따라가서 프로그램을 좀 봤습니다.
일단 먼저 말씀드리고 싶은 것은 위의 소스 하나만 고쳐서 해결된 문제가 아니라는것을 말씀드립니다.

위 스킨은 썸네일이라는 기능을 사용하는데 위 스킨에서 구현된것은 jpeg 이미지만 처리할수있도록 구현된 것입니다.
위 스킨이 다른 이미지를 처리하는것보단 스킨에 올릴 이미지를 jpg로 변형하셔서 올리는것이 좋을듯 합니다.

다른이미지를 처리하려면 그 이미지 포맷에 맞는 기능을 추가 구현하셔야 할듯합니다.

참고로 말씀드리면 위 스킨의 이미지 처리의 핵심은 gbupdate.skin.php의 다음 부분입니다.
        $src_file = $_FILES["wf_file"][tmp_name][$i];
        $dst_file = $image = "./data/file/$bo_table/$file_name.jpg";
        move_uploaded_file($src_file, $dst_file);

        $size = getimagesize($image);
        $src = imagecreatefromjpeg($image);
        // 이미지 높이 비율
        $rate = $size[1] / $size[0];
        // 작은이미지의 높이
        $simg_height = (int)($simg_width * $rate);
        // 이미지가 jpg 라면
        if ($src)
        {
            // 이미지(소) 생성
            $dst = imagecreatetruecolor($simg_width, $simg_height);
            // 1.00.05 gd 버전에 따라
            if (function_exists("imagecopyresampled")) {
                imagecopyresampled($dst, $src, 0, 0, 0, 0, $simg_width, $simg_height, $size[0], $size[1]);
            } else {
                // 1.00.02 imagecopyresized -> imagecopyresampled 로 교체
                imagecopyresized($dst, $src, 0, 0, 0, 0, $simg_width, $simg_height, $size[0], $size[1]);
            }
            imagejpeg($dst, "./data/file/$bo_table/{$file_name}_s.jpg", $image_quality);
        }
전체 9,564
그누3질답 내용 검색

회원로그인

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