2009-05-28 3 views
0

FTP 서버에 파일을 표시하는 객체를 PHP로 작성하고 있습니다. PHP의 내장 된 FTP 함수를 사용하여 필요한 세부 정보 (파일 이름, 크기, 마지막으로 수정 한 파일 등)를 검색합니다. 그러나 서버에 MIME 형식의 파일을 가져 오는 기능은 없습니다. 두 가지 다른 방법을 시도했지만 몇 가지 문제가 있습니다. 다음에서는 FileInfo 사용FTP를 통한 MIME 형식 얻기

(10 개) 파일의 MIME 유형을 얻을 34 초 정도 걸립니다 : 있습니다

$mime_type = mime_content_type('ftp://username:[email protected]/path/file'); 

: mime_content_type를 사용

$finfo = new finfo(FILEINFO_MIME); 
$mime_type = $finfo->file('ftp://username:[email protected]/path/file'); 

() 같은 일을 단지 6 초 정도 걸립니다 여기에 내가 도움이 될 두 가지 이슈가 있습니다. 첫 번째는 보안입니다. 두 가지 방법 중 하나를 사용하면 로그인 자격 증명 일반 텍스트를 전송합니다 (물론 FTP는 안전하지 못하지만 더 악화됩니다). 두 번째 문제는 모범 사례에 가깝습니다. 분명히 mime_content_type()은 훨씬 나은 성능을 발휘하기 때문에이 두 가지 방법 중에서 가장 좋지만 사용되지는 않습니다. 이 작업을 수행하는 것이 더 안전하고 잠재적으로 더 안전합니까? FTP 서버에 아무 것도 설치할 수 없습니다. FTP 서버를 사용하고자하는 anybodies FTP 서버에서 사용하기위한 것이므로 웹 서비스를 사용하는 것이 좋습니다. 사전에

감사합니다,

+0

MIME 형식을 가져올 필요가 있습니까? 대부분의 경우 파일 확장명을 살펴 보는 것으로 충분합니다. 물론 신뢰할 수있는 것은 아니지만 실제로 처리 할 때 MIME 형식 검사를 수행 할 수 있습니다. –

+0

나는 진짜 마임 타입을 원한다. 누구나 jpeg 확장자를 갖기 위해 비트 맵 이미지를 변경할 수 있지만 여전히 비트 맵 이미지입니다. 파일 확장명은 선택 사항입니다. Windows는 확장자가없는 파일을 여는 방법을 알지 못하지만, Linux는 꽤 잘합니다 (Mac에 대해서는 잘 모름). – JamesArmes

답변

3

~ 제임스 암즈 지연의 이유는 각 파일의 마법 바이트를 읽고 어떤 유형 결정하기 위해 서버의 마법 파일을 사용할 필요가있다.

그래서 FTP로 전송을 열고 FTP에서 그 정보를 읽는 것입니다.

+0

하지만 mime_content_type()과 fileinfo의 차이점은 무엇입니까? 둘 다 FTP를 통과합니다. – JamesArmes

+0

FileInfo는 훨씬 더 좋은 방법으로 프로그래밍되었습니다. mime_content_type()의 문서에 설명 된대로. > PECL 확장자 인 Fileinfo가 동일한 기능을 훨씬 더 깔끔하게 제공하므로이 기능은 더 이상 사용되지 않습니다. –

+0

동의하지만, 나는이 성능 손실을 감수 할 여유가 없다. 중간 지점이 있습니까 (즉, fileinfo보다 성능이 뛰어나지 만 더 이상 사용되지 않습니다). – JamesArmes

관련 문제