테스트 사이트 - 개발 중인 베타 버전입니다

개인적 엑셀파일만 업로드 하는데 잘안되네요 채택완료

피라미드 2년 전 조회 3,124

안녕하세요 여러분~! 더우신데 수고들 많으 십니다. 이번 비피해 많이 없으신지요.. 

질문거리 들고 왔네요==;;

요점은 이렇습니다. 개인적으로 엑셀파일을 데이타 처리하는데는 성공했습니다.

파일자체를 특정한 저장공간에 두고 사용을 하고자 업그레이드 하고자 하는데 잘안되네요 ..

한번 자세히 좀 봐주세요 형식상은 분명 맞는것 같은데;;;;무족건 접근만 하면 서버오류가 괴롭해요;; ;;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 폼에서 업로드한 파일을 저장할 디렉토리 경로
    $uploadDir = G5_ADMIN_PATH . '/admin_myhome/';
    $uploadedFile = $uploadDir . basename($_FILES['file']['name']);
    $uploadOk = true;

    // 파일 유형 확인 (.xlsx 확장자인지 확인)
    $fileType = strtolower(pathinfo($uploadedFile, PATHINFO_EXTENSION));
    if ($fileType != 'xlsx') {
        echo "올바른 파일 형식이 아닙니다. .xlsx 파일을 선택해주세요.";
        $uploadOk = false;
    }

    // 파일 업로드가 성공적인지 확인
    if ($uploadOk && !move_uploaded_file($_FILES['file']['tmp_name'], $uploadedFile)) {
        echo "파일 업로드 실패";
        $uploadOk = false;
    }

 

딱 요부분인데 요부분만 접근을 하면 바로 서버오류 로 나와버리는데.. 아무리 디버그해서 못찾겠고..특정한 오류도나오지도않고 ..그래요;;; 혹시 그누에 맞지않는 보안이 있나싶기도하고..;; 암튼 ...몰르겠음요 ㅋㅋ

또한 다른업로드 처리 방식이 있다면 추천도 괸찮습니다.;; 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
2년 전

다음은 기본적인 동작확인을 위한 테스트 코드입니다.

문제 해결에 도움이 될지 모르겠습니다.

</p>

<p><?php

define('G5_ADMIN_PATH', __DIR__);</p>

<p> </p>

<p>// if ($_SERVER['REQUEST_METHOD'] === 'POST') {

if (empty($_FILES['file']) == false) {

    // 폼에서 업로드한 파일을 저장할 디렉토리 경로

    $uploadDir = G5_ADMIN_PATH . '/admin_myhome/';

    $uploadedFile = $uploadDir . basename($_FILES['file']['name']);

    $uploadOk = true;</p>

<p> </p>

<p>    // 업로드 디렉토리 없는 경우 생성

    if (is_dir($uploadDir) == false) {

        mkdir($uploadDir);

    }</p>

<p> </p>

<p>    // 파일 유형 확인 (.xlsx 확장자인지 확인)

    $fileType = strtolower(pathinfo($uploadedFile, PATHINFO_EXTENSION));

    if ($fileType != 'xlsx') {

        echo "올바른 파일 형식이 아닙니다. .xlsx 파일을 선택해주세요.";

        $uploadOk = false;

    }</p>

<p> </p>

<p>    // 파일 업로드가 성공적인지 확인

    if ($uploadOk && !move_uploaded_file($_FILES['file']['tmp_name'], $uploadedFile)) {

        echo "파일 업로드 실패";

        $uploadOk = false;

    }

}

?></p>

<p><form method="post" enctype="multipart/form-data">

<input type="file" name="file" accept=".xls,.xlsx" />

<input type="submit" />

</form></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

피라미드
2년 전
고맙습니다. ^^ 휴 바로 해결 되 버리네요 ㅎㅎ;;
피라미드
2년 전
그런데 여기서 궁금 한게 있는데요;;;
왜 $_SERVER['REQUEST_METHOD'] === 'POST' 이 부분은HTTP로 파일 업로드를 처리하는 로직이 POST 요청일 때만 실행되도록 하는 것인데 이게 왜 않되는거죠?
배르만
2년 전
안되지 않습니다.

포스트 방식으로 요청시 실행은 되지만
코드의 내용이 업로드 파일의 처리를 담고 있었기 때문에
조건문의 체크를 용도에 맞게 변경한것 뿐입니다.

조건이 $_SERVER['REQUEST_METHOD'] === 'POST' 인 경우
클라이언트로부터 업로드된 파일이 없이 POST 방식 요청이 발생하면
서버에서는 업로드 처리부가 동작할텐데

없는 파일을 체크하려고 시도하면서 Undefined Index 같은 메세지를 볼수 있고
코드의 밸리데이션이 잘못되거나 느슨한 경우 의도하지 않았던 심각한 오류가 사이드 이펙트처럼 터질수 있습니다.
피라미드
2년 전
아 그렇군요 정말 감사합니다.. 속이다 뻥 뚤 린 기분이네요 ;;

댓글을 작성하려면 로그인이 필요합니다.

M
2년 전

소스상으로는 크게 문제는 없어 보입니다.

G5_ADMIN_PATH . '/admin_myhome/'

이 경로에 쓰기 권한은 있으신건가요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

피라미드
2년 전
네 권한은 모두 하도않되서 777로 해도 않되네요 하다못해 data 로 보내봐도 서버오류로 나와버려요 .. 오류 내용도 없구요;;;
피라미드
2년 전
관리자 페이지에서 접근 해서 처리하는데 뭐 연관되서 막는게 있는 부분이 있나요?
피라미드
2년 전
분명권한 줬는뎅 권한도 문제 있어네요 ;; 위 소스로 해결 봤어요 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인