Mối quan hệ giữa các loại MIME và File .extensions là gì?


19

Tôi có thể có ý tưởng sai ở đây, nhưng tôi nghĩ rằng:

Các loại MIME đang xác định mã, được nhúng bên trong một tệp.
Tệp .extensions là mã xác thực, được gắn với tên của tệp .

Tôi nghĩ, từ một thứ mà tôi nghe được trong thời kỳ đen tối mờ nhạt, rằng Linux là thuyết bất khả tri ... (có lẽ đó là vào thời kỳ đầu, và mọi thứ đã thay đổi kể từ đó ...?)

Gần đây tôi đến từ thế giới Windows, ở đó, ở cấp Hệ điều hành , một tệp .extension là cách duy nhất (theo như tôi biết) để liên kết nó với chương trình Ứng dụng có liên quan.

Bởi vì tôi không biết tại sao , tôi thấy hơi khó tin khi một tệp có tên "fred" một tệp có tên "fred.txt" đều mở ra trong Trình soạn thảo văn bản.

Có một hệ thống phân cấp rõ ràng trong công việc ở đây?

Câu trả lời:


16

Các loại MIME chỉ là một cách để đặt tên cho các loại. Họ không có bất cứ điều gì liên quan đến cách xác định loại tệp.

Có hai cách để xác định loại tệp: a) Nhìn vào phần mở rộng của nó và hy vọng rằng nó chính xác hoặc b) xem nội dung của nó và sau đó đoán dựa trên đó. Nếu một tập tin không có phần mở rộng b là lựa chọn duy nhất.

Nhiều định dạng tệp (nhị phân) có một tiêu đề cụ thể mà bạn có thể xem để xác định loại của chúng. Điều này làm cho tùy chọn b khá đáng tin cậy cho những loại đó.

Các định dạng tệp văn bản thuần thường có thể được xác định theo cấu trúc của chúng (nếu một tệp chứa nhiều thẻ html, thì đó có thể là tệp html).

Trên các hệ thống unix và linux, bạn có thể sử dụng filetiện ích dòng lệnh để tìm ra loại tệp dựa trên nội dung của nó.

Trình quản lý tệp thường sử dụng một số kết hợp của tùy chọn a và b (ví dụ: nhìn vào phần mở rộng tệp trước, nếu không biết (hoặc tệp không có phần mở rộng), hãy xem nội dung).

Loại tệp không được lưu trữ dưới dạng siêu dữ liệu trên các hệ thống tệp linux phổ biến.


14

Trong Linux, phần mở rộng tệp là một phần của tên tệp và thực sự không có ý nghĩa gì với hệ điều hành. Một loại MIME là một mô tả về nội dung của tệp. fredfred.txtcả hai sẽ có một loại MIME text/plain.

Trình quản lý tệp, chẳng hạn như Nautilus sử dụng loại MIME này để biết chương trình nào sẽ mở tệp. Trong một thiết bị đầu cuối, xdg-openlệnh làm điều tương tự. Tuy nhiên, đây là cấp không gian người dùng chứ không phải cấp hệ điều hành.

Các tệp không thực sự chứa loại mime này, nhưng các chương trình mở chúng sử dụng các phương pháp khác nhau để tìm ra loại MIME này là gì. Một số chỉ dựa vào phần mở rộng tệp, nhưng hầu hết sử dụng hỗn hợp các kỹ thuật bao gồm xem dữ liệu ở đầu tệp.

Nếu phần đầu của tệp chỉ chứa các byte có thể được biểu diễn dưới dạng các ký tự ASCII, thì có thể giả định rằng đó là một tệp văn bản. Nếu sau đó, phần mở rộng giống như .html, chương trình giả định rằng đó là một trang HTML và do đó mở nó bằng trình duyệt web. Điều tương tự làm việc với các định dạng tệp nhị phân. Ví dụ: tôi biết rằng định dạng tệp bitmap bắt đầu bằng 'BMP' trong ASCII, sau đó là dữ liệu nhị phân đại diện cho hình ảnh.

Nói một cách đơn giản, các chương trình Linux đưa ra dự đoán dựa trên dữ liệu trong một tệp và phần mở rộng tệp của nó. Điều này nghe có vẻ không đáng tin cậy nhưng các thuật toán được sử dụng phức tạp hơn các ví dụ tôi đã đưa ra và thực sự chính xác.


5

Trong thế giới linux Phần mở rộng tệp chỉ là một chỉ báo cho loại tệp. Có một công cụ dòng lệnh gọi là "file" để đoán loại tệp.

Để có được loại này, chủ yếu có 3 chỉ số:

  • Phần mở rộng
  • Các thuộc tính đặc biệt trong hệ thống tệp (như đối với sym- hoặc liên kết cứng, thư mục, thiết bị đầu vào, v.v.)
  • Nội dung
    • Nhị phân (như thông tin ELF trong tệp thực thi)
    • Văn bản (như <html>, #!/bin/bash)

Mối quan hệ giữa loại tệp và loại MIME là, MIME chỉ là một tiêu chuẩn để đại diện cho loại tệp (như text/css).

Linux "đoán" loại tệp và mở một chương trình liên quan cho loại đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.