PHP 는 파일 mime 형식 을 가 져 오 는 다양한 방법 으로 해석 합 니 다.
1.mime 사용content_type 방법
string mime_content_type ( string $filename )
Returns the MIME content type for a file as determined by using information from the magic.mime file.
<?php
$mime_type = mime_content_type('1.jpg');
echo $mime_type; // image/jpeg
?>
그러나 이 방법 은 php 5.3 이상 에서 폐기 되 었 으 며,공식 적 으로 fileinfo 방법 으로 대체 할 것 을 건의 합 니 다.2.Fileinfo 방법 사용(공식 추천)
fileinfo 를 사용 하려 면 php 를 설치 해 야 합 니 다.fileinfo 확장.
설치 되 어 있 으 면 extensiondir 디 렉 터 리 에서 php 찾기fileinfo.dll(windows),fileinfo.so(linux)
php.ini 를 열 고 extension=phpfileinfo.dll 앞의";"제거 하고 apache 를 다시 시작 합 니 다.
<?php
$fi = new finfo(FILEINFO_MIME_TYPE);
$mime_type = $fi->file('1.jpg');
echo $mime_type; // image/jpeg
?>
3.image 사용type_to_mime_type 방법(이미지 형식 만 처리 가능)exif 사용imagetype 방법 은 php 를 설치 해 야 합 니 다.exif 확장 및 php 설치 필요mbstring 확장
설치 되 어 있 으 면 extensiondir 디 렉 터 리 에서 php 찾기exif.dll(windows),exif.so(linux)
php.ini 를 열 고 extension=phpmbstring.dll, extension=php_exif.dll 앞","제거 하고 apache 를 다시 시작 합 니 다.
<?php
$image = exif_imagetype('1.jpg');
$mime_type = image_type_to_mime_type($image);
echo $mime_type; // image/jpeg
?>
Tips:파일 이름 의 접 두 사 를 사용 하면 파일 접 두 사 를 수정 할 수 있 기 때문에 파일 접 두 사 를 사용 하여 판단 하 는 것 이 정확 하지 않 습 니 다.php 파일 가 져 오기 mime 형식 Fileinfo 등 방법
며칠 전 wordpress xmlrpc api 를 사용 하여 원 격 으로 글 을 올 렸 습 니 다.로 컬 서버 의 글 창고 에 발표 할 wordpress 글 이 그림 파일 을 포함 하고 있 을 때 WordPress 에서 파일 을 업로드 하 는 API metaWeblog.newMediaObject 를 사용 합 니 다.이 api 는 파일 의 mime 형식 을 제공 해 야 합 니 다.php 는 어떻게 파일(그림)의 mime 형식 을 가 져 옵 니까?최초 원 격 블 로그 사용 php mimecontent_type()함수,개발 용 ubuntu server lamp 의 기본 설정 테스트 를 사용 하여 완전히 지원 합 니 다.올 바른 파일 mime type 을 되 돌려 줍 니 다.그러나 이 API 항목 을 Centos 5.2(커 널 2.6)LAMP 환경 에 이식 할 때 다음 과 같은 오류 알림 이 발생 했 습 니 다.
Fatal error: Call to undefined function: mime_content_type()
마지막 으로 최신 php 매 뉴 얼 을 봤 는데 php mimecontent_type()함수 가 폐기 되 었 습 니 다.물론 공식 적 으로 사용 하 는 것 을 추천 하지 않 으 며 적당 한 phop 설정 을 거 쳐 야 사용 할 수 있 습 니 다.따라서 그림 이나 다른 파일 의 MIME 형식 을 가 져 오 려 면 Fatal error:Call to undefined function:mimecontent_type()오 류 는 다음 과 같은 몇 가지 해결 방안 이 있 습 니 다.mime_content_type()함수 판단 으로 mime 형식 가 져 오기
phop 5.3.0 버 려 진 mimecontent_type()함수 가 여전히 특별한 종 류 를 가지 고 있 습 니 다.phop 설정 에 magic 을 사용 할 수 있 습 니 다.mime 확장.예 를 들 어 Centos 에서 phpinfo()를 사용 하여 php apache 설정 을 보고 mime-magic 를 찾 습 니 다.'--without-mime-magic'이 표시 되면 php 를'with-mime-magic'옵션 으로 변환 합 니 다.mime_content_type()함 수 는 아파 치 httpd 의 magic 파일(mimemagic.magicfile)파일 의 MIME 형식 을 검사 하기 위해 서 는'Cwith-mime-magic=/usr/share/file/magic.mime'와 같은 magic 파일 의 주 소 를 설정 해 야 합 니 다.Windows 환경 에서 php.ini 에 추가 해 야 합 니 다:
mime_magic.magicfile = "$PHP_INSTALL_DIRmagic.mime"
그 중$PHPINSTALL_DIR 은 당신 의 php 설치 디 렉 터 리 입 니 다.어떤 LAMP 환경 에서 이 mimemagic 파일 이 반드시 존재 하거나 읽 을 수 있 는 것 이 아니 라 따로 다운로드 해 야 합 니 다.또한 일부 가상 호스트 는 보안 을 위해 with-mime-magic 이 있어 도 정확 한 mime 형식 으로 돌아 가 는 것 이 아니 라 빈 문자열 로 돌아 갈 때 도 있 습 니 다.그래서 mimecontent_type()함수 가 폐기 되 었 습 니 다.이 방법 으로 파일 MIME 형식 을 가 져 오 는 것 을 추천 하지 않 습 니 다.php Fileinfo 파일 MIME 형식 가 져 오기(finfoopen)
PHP 공식 추천 mimecontent_type()의 대체 함 수 는 Fileinfo 함수 입 니 다.PHP 5.3.0+는 기본적으로 Fileinfo 함수(fileinfo support-enabled)를 지원 하 며,어떠한 설정 없 이 finfo 를 사용 할 수 있 습 니 다.open()은 파일 MIME 형식 을 가 져 오 는 것 을 판단 합 니 다.Centos 기본 으로 설 치 된 LAMP 환경 php 버 전 은 PHP 5.2.6 이 며 5.3.0 버 전 보다 낮 으 면 유사 한 오류 알림 이 발생 할 수 있 습 니 다:PHP Fatal error:Call to undefined function finfoopen() in…。이전 phop 버 전 때문에 magic 를 불 러 와 야 합 니 다.open 클래스,fileinfo 함 수 는 PECL 확장 에 속 합 니 다.fileinfo PECL 확장 을 사용 해 야 MIME 형식 을 감지 할 수 있 습 니 다.그래서 fileinfo 를 사용 하여 파일 을 가 져 오 는 MIME 형식 이 두 가지 가 있 습 니 다.
php 버 전 을 5.3.0 이상으로 업그레이드 합 니 다.php 공식 도 이 fileinfo pecl 확장 패 키 지 를 더 이상 유지 하고 업데이트 하지 않 기 때문에 업그레이드 하 는 것 이 가장 좋 은 방법 입 니 다.
fileinfo pecl 확장 을 설치 합 니 다.Centos Liux 는 fileinfo 를 어떻게 설치 합 니까?Centos 아래 에 fileinfo 명령(rpm):yum install phop-pecl-Fileinfo 를 설치 합 니 다.원본 코드 로 컴 파일 하기:
cd /usr/src/down && wget http://pecl.php.net/get/Fileinfo-1.0.4.tgz
tar zxvf Fileinfo-1.0.4.tgz
cd /usr/src/down/Fileinfo-1.0.4 && phpize && ./configure && make && make install
또한 인터넷 에 많이 퍼 지 는 방법 도 사용 할 수 있 습 니 다.Linux 는 phpize 를 통 해 pecl 명령 을 사용 하여 fileinfo 를 설치 할 수 있 습 니 다.
MIME 형식의 파일 이 그림 파일 만 있다 고 판단 하려 면 먼저 exif 를 사용 할 수 있 습 니 다.imagetype()함수 로 이미지 형식 상수 가 져 오고 imagetype_to_mime_type()함 수 는 그림 형식의 상수 를 그림 파일 의 MIME 형식 으로 변환 합 니 다.같은 php.ini 에서 php 열기 설정mbstring.dll(Windows 필요)와 extension=phpexif.dll。phpinfo()“Cenable-exif”。우선 exifimagetype 은 IMAGETYPE 와 같은 이미지 형식 상수(Imagetype Constants)를 되 돌려 줍 니 다.GIF、IMAGETYPE_JPEG、IMAGETYPE_PNG 등.
<?php
$image = exif_imagetype("D:farleeinfo.jpg"); // IMAGETYPE_GIF//
$image = exif_imagetype("http://farlee.info/wp-content/images/rss_feedsky.gif");
$mime = image_type_to_mime_type($image);
echo $mime; // image/jpeg
?>
php 파일 업로드 MIME 형식 가 져 오기php 로 파일 을 업로드 하고 파일 을 업로드 하 는 MIME 형식 을 감지 하면 전역 변 수 를 사용 할 수 있 습 니 다$FILES['uploadfile']['type']클 라 이언 트 의 브 라 우 저 에서 파일 MIME 형식 을 가 져 옵 니 다.
Centos 시스템 이나 다른 환경 에서 파일 MIME 형식 을 가 져 오기 가 불편 하 다 면 마지막 으로 실행 가능 한 방법 은 파일 이름 접 두 사 를 읽 는 것 입 니 다.접두사 이름 에 따라 파일 에 대응 하 는 MIME 형식 에 따라 phop 매 뉴 얼 에 있 는 이 댓 글 을 참고 할 수 있 습 니 다.물론 이런 방법 으로 검출 된 MIME 파일 형식 이 꼭 정확 한 것 은 아니다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.