2010-03-30 37 views
12

Có cách nào để lấy loại MIME của tệp bằng cách sử dụng một số cuộc gọi hệ thống trên Windows không? Tôi đang viết một phần mở rộng IIS trong C + +, vì vậy nó phải được gọi từ C + +, và tôi có quyền truy cập vào IIS nếu có một số chức năng tiếp xúc. Rõ ràng, IIS chính nó phải có khả năng làm điều này, nhưng googling của tôi đã không thể tìm hiểu làm thế nào. Tôi đã tìm thấy this .net câu hỏi liên quan ở đây trên SO, nhưng điều đó không cho tôi nhiều hy vọng (như là một giải pháp tốt cũng không phải là một giải pháp C + + được đề cập ở đó).Tìm loại MIME cho tệp trên windows

Tôi cần nó để tôi có thể phân phối các tệp động bằng cách sử dụng loại nội dung thích hợp từ ứng dụng của tôi. Kế hoạch của tôi là lần đầu tiên tham khảo danh sách các loại MIME trong ứng dụng của tôi, sau đó quay trở lại danh sách loại MIME của hệ thống (tuy nhiên nó hoạt động; rõ ràng là nó tồn tại vì đó là cách bạn kết hợp các tệp với các chương trình). Tôi chỉ có một phần mở rộng tập tin để làm việc với trong một số trường hợp, nhưng trong trường hợp khác tôi có thể có một tập tin trên đĩa thực tế để kiểm tra. Vì đây sẽ không phải là các tệp do người dùng tải lên, tôi tin rằng tôi có thể tin tưởng tiện ích và tôi muốn giải pháp tra cứu chỉ mở rộng vì nó có vẻ đơn giản và nhanh hơn. Cảm ơn!

+0

giả định của bạn là đúng: trên Windows, các mối liên hệ giữa các phần mở rộng và các chương trình không sử dụng các loại MIME. Trong sổ đăng ký, mỗi phần mở rộng được kết hợp với một mục mô tả và có một giá trị '\ Shell \ Open \ Command \'. Điều này cho phép hai tiện ích mở rộng chia sẻ một mục nhập mô tả, ví dụ: '.jpeg' và' .jpg' chia sẻ mục mô tả 'jpegfile' – MSalters

+0

MSalters, tôi có thể thề rằng trong XP, hộp thoại hiệp hội tập tin có một vị trí trong nó cho kiểu MIME ... nhưng ở đây trên Win Server 2k8, trong "Default Programs" hộp thoại, nó có vẻ là giống như bạn nói ... đó không phải là hữu ích cho tôi: ( – rmeador

Trả lời

13

HKCR\\.<ext>\Content Type (trong đó "ext" là phần mở rộng tệp) thường sẽ giữ kiểu MIME.

+0

Không giống như giải pháp Avitus, điều này hỗ trợ cả hai .jpg và .jpeg – MSalters

0

dán từ http://www.snoyman.com/blog/2012/03/ie-mimetype-png.html:

#include <urlmon.h> 
#include <stdio.h> 

int main(int argc, char* argv[]) 
{ 
    char buff[256]; 
    LPWSTR out; 

    FILE *in = fopen("title.png", "rb"); 

    fread(buff, 1, 256, in); 

    FindMimeFromData(NULL, NULL, buff, 256, NULL, FMFD_DEFAULT, &out, 0); 

    printf("%ls\n", out); 

    return 0; 
} 
Các vấn đề liên quan