IE sử dụng GetClassFileOrMime
và FindMimeFromData
API để phát hiện các loại mime dữ liệu/file (UrlMon
đơn vị trong Delphi).
MIME Type Detection in Internet Explorer
Các CLSID trở về từ GetClassFileOrMime
thể được đặt trong registry dưới HKEY_CLASSES_ROOT\CLSID\<clsid>\MimeTypes
. (cũng FileExtensions
, FriendlyName
).
Cơ quan đăng ký cũng có cơ sở dữ liệu MIME theo: HKEY_CLASSES_ROOT\MIME\Database\Content Type
.
Nhưng kể từ danh sách known MIME types là tương đối nhỏ, bạn có thể giữ điều đó dưới dạng XML tài nguyên (hoặc bất kỳ thứ gì) và chỉ cần tìm nạp từ đó. Điều này sẽ hỗ trợ cả Windows và OSX.
Để thao tác tải lên tệp, bạn có thể chỉ cần sử dụng application/octet-stream
.
Indy có TIdMimeTable
lớp (IdGlobal
) và nó sử dụng danh sách cố định cộng với kiểm tra sổ đăng ký HKEY_CLASSES_ROOT
(xem FillMimeTable
). Nếu không tìm thấy kết quả phù hợp, hãy sử dụng application/octet-stream
.
Bạn có thể muốn kiểm tra tệp nội dung ở phía máy chủ khi tệp được tải lên và không dựa vào tiêu đề vì ContentType
có thể bị giả mạo ở phía máy khách và cũng không khớp với đăng ký tại máy chủ -bên.