2013-05-12 40 views
7

Tôi đã tìm kiếm trong tài liệu PHP một thời gian, nhưng tôi không tìm thấy cách nào để chuyển đổi phần mở rộng kiểu MIME thành phần mở rộng kiểu tệp.Chuyển đổi loại MIME thành tệp Mở rộng PHP

image_type_to_extension 

Dường như hoạt động nếu tệp là hình ảnh. Trong trường hợp cụ thể của tôi, các loại mime không dành cho hình ảnh, chúng dành cho các kiểu phông chữ: 'otf, ttf'.

+0

Không phải mọi loại MIME đều có phần mở rộng tệp cố định. Tôi muốn tạo một mảng với phần mở rộng tệp cho mọi loại MIME mà hệ thống của bạn sẽ có khả năng xử lý –

+0

Không có loại MIME chuẩn nào cho phông OTF –

+0

Tất nhiên có: 'application/x-font-otf' –

Trả lời

16

Bạn có thể sử dụng một cái gì đó như:

function getExtension ($mime_type){ 

    $extensions = array('image/jpeg' => 'jpeg', 
         'text/xml' => 'xml' 
         ); 

    // Add as many other Mime Types/File Extensions as you like 

    return $extensions[$mime_type]; 

} 

Lưu ý: không phải mọi kiểu MIME có đuôi tệp cố định. Ngoài ra, các loại MIME như application/octet-stream có thể tham chiếu đến nhiều tiện ích mở rộng tệp.

+0

Cảm ơn bạn, tôi không biết rằng octet-stream đề cập đến nhiều phần mở rộng tập tin. Có lẽ tôi nên tìm một cách để gửi tên tập tin, mặc dù ngay bây giờ nó là "blob" vì chuyển đổi một dataURL thành blob, tôi có thể thay đổi tên tệp nhưng nó không hoạt động trong firefox: http: //stackoverflow.com/questions/8495301/change-filename-in-blobbuilder-to-be-pass-as-formdata-on-xhr – TaylorMac

+11

Nếu bạn quyết định đi tuyến đường này, đây là một danh sách khá đầy đủ để giúp bạn bắt đầu: https://github.com /EllisLab/CodeIgniter/blob/develop/application/config/mimes.php – xbonez

+0

Đối với những người đến đây muộn như tôi, đây là thư viện chuyên dụng thực hiện công việc: https://github.com/dflydev/dflydev-apache-mime -types – Romain

-2

Không chắc chắn nếu điều này sẽ luôn luôn trả về phần mở rộng tập tin đúng, nhưng bạn có thể sử dụng pathinfo() để có được phần mở rộng từ tên tập tin, thay vì chuyển đổi mime_types.

$Extension = pathinfo(basename($_FILES['image']['name']), PATHINFO_EXTENSION); 

echo $Extension; 
6

Lần đầu tiên nhận $ mime loại cho hình ảnh, sau đó phát chuỗi bằng '/' sẽ trả về mảng.

$extension = explode('/', $mime)[1]; 
+0

Tôi đã tự hỏi nếu giải pháp này có thể làm việc. Nhưng nó sẽ kể từ khi loại mime luôn có 2 phần cách nhau bởi "/". Một danh sách đầy đủ các loại mime chứng minh nó https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types – BoCyrill

+0

Có, thay vì đặt một tập hợp nhất định các loại MIME, nó có thể chỉ đơn giản là được thực hiện như thế này .... –

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