IT/PHP

[PHP] 대용량 파일 업로드 할 시 체크사항

월공 2021. 3. 31. 12:44
728x90
300x250

파일을 업로드할때 당연한것임에도 불구하고 항상 잘 빼먹는것이 있다

 

enctype="multipart/form-data" 꼭 체크체크

<form id="fileForm" name="fileForm" method="POST" enctype="multipart/form-data" >
	<input type="file" id="fileName" name="fileName">
	
    ...
    
</form>

 

받는쪽에서는 아래와 같이 조정해주면되는데 맨 첫줄은 굳이 안써줘도된다.

ini_set('memory_limit','-1'); //파일 용량이 커서 메모리가 많이 필요할때

$fileName = $_FILES['fileName']['name'];
$error = $_FILES['fileName']['error'];

if( $error != UPLOAD_ERR_OK ) {
  switch( $error ) {
    case UPLOAD_ERR_INI_SIZE:
    case UPLOAD_ERR_FORM_SIZE:
    echo "파일이 너무 큽니다. ($error)";
    break;
  case UPLOAD_ERR_NO_FILE:
  	echo "파일이 첨부되지 않았습니다. ($error)";
  	break;
  default:
  	echo "파일이 제대로 업로드되지 않았습니다. ($error)";
  }
  exit;
}

move_uploaded_file( $_FILES['fileName']['tmp_name'], "경로/$fileName");

 

내 경우에는 100M 가 넘는 파일의 용량을 업로드 할일이 있었어서 그냥 php.ini 에서 아래부분들을 수정해주면 될줄알았는데 희한하게 에러없이 자꾸 중도에 실행이 멈춰서 혹시 메모리 때문인가 싶어서 상단에 memory_limit 을 무제한으로 줬더니 해결이되었다.

사실 무제한을 줘서 해결하는건 별로 좋은 방법은 아닌거같고 이 부분은 추후에 좀 더 찾아봐야겠다

#php.ini 단 수정
upload_max_filesize = 200M
post_max_size = 200M

#php 파일 상단 선언, 메모리 제한 무제한
ini_set('memory_limit','-1');

 

그 이외에 php.ini 설정사항을 일일히 터미널이나 ini 파일 열어서 보기 귀찮으면

가동되고있는 서버상에 아무 이름의 php 파일 하나 만들어서 내용에 아래 처럼 적어주면 

 

ex) www.example.com/test.php

<?
	phpinfo();
?>

아래와 같이 ctrl + F 해서 검색해보면 내가 설정한 부분 혹은 확인해야할 부분이 어떤식으로 되어있는지 적용은 되었는지 체크할수있어서 편하다.

728x90
300x250