CI 묻고 답하기

제목 do_upload 멀티업로드 업로드 권한문제
카테고리 CI 2, 3
글쓴이 보라색맛났어 작성시각 2021/01/11 15:07:58
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 10484   RSS


멀티업로드를 할 때 do_upload를 사용하려고 했는데 파일이 서버에 안 올라가는거 같아서 error문을 출력해 봤는데
'업로드하려는 폴더가 쓰기 가능하지 않은 것으로 보입니다.' 같은 에러가 표시 됩니다
경로 폴더들 권한을 확인해 봤는데 707이고 777로 수정해 봤는데도 위와 같은 에러문구가 나오는데 뭐가 문제일까요??

로직은 https://www.cikorea.net/bbs/view/tip?idx=8201 이걸 참고했습니다






<table style="border:0; margin: 0 5px 0 0;" width="100%">
					<tr>
						<td align="left">
							<input type="file" name="file[]" value="파일선택" style="width: 120px; height: 22px; font-size: 8pt;" multiple="true"/>
						<td align="right">
							<input type="button" value="업로드" style="margin-left: 2px; height: 22px; font-size: 8pt;width: 60px;" onclick="javascript:doFileUpload();" />
						</td>
					</tr>
				</table>

<script>
function doFileUpload(){
    	var formData = new FormData($('#fileForm')[0]); 
    				
    	
    	$.ajax({ type: "POST",
    			 enctype: "multipart/form-data", // 필수 
    			 url: "/saveNewImage?m=<?=$menuid?>",
    			 data: formData, // 필수 
    			 processData: false, // 필수 
    			 contentType: false, // 필수 
    			 cache: false, 
    			 success: function (result) { 
    			 	//window.self.close();
    			 	//location.reload();
    			 }, error: function (e) { } });
	
	}
</script>

<?php

public function saveNewImage(){

    $field_name = 'file';
	$upload_dir = '/upload/result/'.$rsrv_sq;
	if(!is_dir($upload_dir)){
	    mkdir($upload_dir,0707,true);
	}
	    
	//$cnt_field = count($this->input->post($field_name));
	$multi_files = $_FILES;
	$cnt_field = count($_FILES[$field_name]['name']);
	    
	if($cnt_field > 0){
	        for($i=0;$i<$cnt_field;$i++){	            
	            $this->multi_upload($field_name, $upload_dir, $multi_files, $i);
        }	        
	}
}

public function multi_upload($field_name, $upload_dir, $multi_files=FALSE,$multi_index=FALSE){
	    
	    $config['upload_path'] = realpath($upload_dir);
	    $config['allowed_types'] = 'gif|jpg|jpeg|png|tif|tiff|mp4|pdf';
	    $config['encrypt_name']  = TRUE;
	    $config['remove_spaces']  = TRUE;
	    $config['overwrite']  = FALSE;
	    
	    
	    $this->load->library('upload', $config);
	    
	    if($multi_index !== FALSE)
	    {
	        $_FILES[$field_name]['name']= $multi_files[$field_name]['name'][$multi_index];
	        $_FILES[$field_name]['type']= $multi_files[$field_name]['type'][$multi_index];
	        $_FILES[$field_name]['tmp_name']= $multi_files[$field_name]['tmp_name'][$multi_index];
	        $_FILES[$field_name]['error']= $multi_files[$field_name]['error'][$multi_index];
	        $_FILES[$field_name]['size']= $multi_files[$field_name]['size'][$multi_index];
	    }
	    
	    
	    if($this->upload->do_upload($field_name)){
	        
	        echo "success";
	        
	    }else{
	        
	        echo $this->upload->display_errors();
	    }
	    
	}

    ?>

 

 다음글 PHPMailer 타 서버를 통해 메일 보내는법이 궁금... (8)
 이전글 ci4 사용중인데 자꾸 index.php에서 paths... (5)

댓글

한대승(불의회상) / 2021/01/11 15:26:57 / 추천 1
realpath() 로 어디에 저장되는지 정확한 위치를 확인해 보세요.
변종원(웅파) / 2021/01/11 16:00:30 / 추천 0
저장되는 상위 디렉토리의 퍼미션도 확인하시구요.