2009-03-16 28 views
6

Tôi đang tìm cách tốt nhất (có thể trên hầu hết các bản cài đặt PHP 5.2 và vẫn đang tích cực phát triển) để phát hiện một loại tệp MIME bằng PHP.Phát hiện loại MIME trong PHP

Tôi biết phương thức mime_content_type() và tiện ích Fileinfo, tuy nhiên mime_content_type() không đáng tin cậy và không được dùng nữa và Fileinfo không có cài đặt PHP "chuẩn" (5.2).

Tôi có tùy chọn nào khác không?

Trả lời

5

Bạn đã xem gói PEAR này chưa?

http://pear.php.net/package/MIME_Type

+0

Cảm ơn. Nó không lý tưởng, vì tất cả nó thực sự là cố gắng sử dụng hai phương pháp mà tôi đã đề cập, một phương pháp khác sẽ không hoạt động trên tất cả các hệ thống (ví dụ Windows), và sau đó trở lại để phát hiện bằng phần mở rộng, nhưng nó trông giống như lựa chọn tốt nhất của tôi trong thời gian này. –

0

Bạn có thể làm một subrequest đến webserver bạn đang chạy trên, sau đó phân tích các tiêu đề để có được mime gõ theo cách đó. Vì điều này là chậm, hãy sử dụng curl để chỉ nhận tiêu đề không phải là yêu cầu đầy đủ. Điều này quan trọng nếu bạn đang xem các tệp lớn.

Nếu bạn đang chạy Apache và sử dụng php làm mô-đun, hãy xem hàm VIRTUAL. nó là một cách nhanh hơn để làm một subrequest hơn bằng cách sử dụng curl.

Nếu không, bạn có thể tra cứu loại mime theo tiện ích mở rộng. Điều này sẽ làm cho tất cả các tập tin cũng được đặt tên làm việc.

11

(lol xin lỗi tôi nhận ra điều này được hỏi vài tháng trước đây khi tôi kết thúc lên. Oh well. Cũng có thể thêm này ...)

Nếu đó là một máy chủ * nix bạn có thể sử dụng tập tin lệnh.

file -bi <filepath> 

Bạn sẽ phải sử dụng "exec" trong PHP để làm điều đó tôi đoán? Tôi mới đến PHP nên không báo cho tôi về vấn đề này nhưng ...

$content_type = exec("file -bi " . escapeshellarg($filepath)); 

tôi không kiểm tra nó, do đó bạn có thể cần phải thoát khỏi chuỗi đường dẫn và định dạng đầu ra.

Dunno nếu điều này sẽ đáng tin cậy hơn các phương pháp khác.

+2

Tôi sử dụng tập tin -b --mime-type $ filename, nhưng câu trả lời hay! – icco

+0

cảm ơn bạn cảm ơn bạn cảm ơn bạn !!!! – Kama

Các vấn đề liên quan