[php] mime type 알아내는 방법 - PHP version < 5.3 일 경우 꼼수

2015. 3. 16. 17:31 from Dev/php

파일을 업로드 전송받는 경우 파일 MIME type을 결정해주어야 하는 경우가 종종 생깁니다.

오늘은 이미지를 데이터베이스에 blob으로 넣는 작업을 하면서 클라이언트 요청으로 MIME TYPE도 같이 저장해주도록 하였습니다.

시작하면서는 Fileinfo function이 있으니 별거 아니겠네.. 하였는데 역시나 제가 하는 일은 쉽게 끝나는 법이 없군요. OTL

일단 서버 PHP 버전이 5.2라 Fileinfo 가 이용 불가능한 상태였고, mime_content_type 함수는 depreciated 입니다.

요새 제 프로젝트의 프레임워크로 이용하는 laravel에는 mime type을 guessing하는 부분이 있긴 한데..

오늘은 할 수 없이 업로드되는 파일 확장명을 기반으로 mime type을 리턴해주는 함수를 구글링해서 이용하였습니다:

http://www.brightcherry.co.uk/scribbles/php-alternative-to-the-depreciated-mime_content_type-function-and-fileinfo-functions/

물론 이 방식은 이용자가 전송하는 파일의 확장명을 의심없이(?) 받아들여서 처리하기 때문에 보안상 문제의 여지는 있습니다.

이런 문제를 해결해주는 것이 맞는 것이긴 한데.. 성격상 서버 PHP 버전만 업그레이드 해주면 되는 문제를 굳이 시간을 들여가면서 하고 싶진 않기도 하고.. 어차피 DB에 있으니 보안상 문제는 그나마 조금 덜하니 차라리 DB에서 꺼내주는 과정만 신경을 써주면 되겠구나 하면서 마무리하였습니다.

Posted by banasun :

[laravel - tip] Laravel과 angularjs 같이 쓸 때 {{ curly braces }} 사용방법

2015. 3. 6. 14:58 from Dev/laravel

Laravel과 angularjs를 같이 이용하려고 하다 보니.. laravel의 template engine인 Blade와 angularjs 모두 이 double curly braces를 이용하는 문제가 있네요. ㅋㅋ

이럴 때에는 blade의 template에서 angularjs의 {{ }} 를 이용할 때 앞에 @를 붙여주면 간단히 해결됩니다. 아래처럼 말이지요.



@{{ 앞에 @가 있으면 blade가 치환을 안합니다  }}


'Dev > laravel' 카테고리의 다른 글

laravel form 이용시 arguments  (0) 2015.04.01
Posted by banasun :

한달전 (또는 특정 날짜, 며칠 이전) 파일들 모두 삭제하기

2015. 3. 6. 10:41 from Dev/Linux

오늘은 간단한 명령이지만 정작 쓰려면 긴가민가 하는 명령을 하나 설명드립니다.

서버를 운영하다 보면 (따로 관리자 없이) 로그파일이나 더이상 이용하지 않는 임시 파일들이 많이 생깁니다. 저 같은 경우는 네이버 신디케이션을 이용하면서 네이버쪽에 ping 요청하면서 신디케이션 문서를 xml로 생성해 놓는데요, 몇 천개를 하다 보니 ping 요청을 한다고 중국집 마냥 바로 와서 가져가는게 아니니 서버에 계속 쌓이게 되더군요. 생각없이 있다가 디렉토리를 보니 파일이 너무 많아졌습니다. -_-;;

삭제를 하려고 해도 이게 네이버에서 가져간 건지 아닌지 모르니 - 경험상 며칠씩 걸리는 경우도 있더군요 - 10일 정도 기간을 두고 그 이전 xml 파일만 삭제할 필요가 생겼습니다.

이럴 때에는 아래와 같이 하면 됩니다 :



find *.xml -mtime +10 -exec rm {} \;


find 명령은 다들 아시지요? 첫번째 인수는 디렉토리 이름이나, * 등 아무거나 들어가도 됩니다.

두번째 인수 -mtime은 기간을 일 단위로 정해줍니다. 한 달로 하려면 -mtime +30 하면 되겠지요.

세번째 -exec는 다음 명령으로 전달하는 부분입니다. 저는 삭제를 하려고 하니 rm 명령어를 이용하겠습니다. 그 뒤에 나오는 {} 과 \; 는 꼭 입력해주셔야 합니다.





Update: 명령이 실행된 파일들을 보고 싶으시면 -print 옵션을 추가하시면 됩니다.



find *.xml -mtime +10 -print -exec rm {} \;
Posted by banasun :