有什么方法可以在给定文件扩展名的情况下获取 C++ 中的 MIME 类型?
我读过 HKEY_CLASSES_ROOT,但老实说我不知道如何使用它。
我想要的是输入:
string extension=".pdf";
string extension2=".avi";
获取输出:
string mimeType="application/pdf";
string mimeType2="video/x-msvideo";
我知道我可以自己完成,但我想这里已经完成了一些工作。
非常感谢
最佳答案
最简单的解决方案是调用 FindMimeFromData
:
#include <urlmon.h>
#pragma comment( lib, "urlmon" )
std::wstring MimeTypeFromString( const std::wstring& str ) {
LPWSTR pwzMimeOut = NULL;
HRESULT hr = FindMimeFromData( NULL, str.c_str(), NULL, 0,
NULL, FMFD_URLASFILENAME, &pwzMimeOut, 0x0 );
if ( SUCCEEDED( hr ) ) {
std::wstring strResult( pwzMimeOut );
// Despite the documentation stating to call operator delete, the
// returned string must be cleaned up using CoTaskMemFree
CoTaskMemFree( pwzMimeOut );
return strResult;
}
return L"";
}
下面的应用
int _tmain( int argc, _TCHAR* argv[] ) {
std::wcout << L".pdf: " << MimeTypeFromString( L".pdf" ) << std::endl;
std::wcout << L".avi: " << MimeTypeFromString( L".avi" ) << std::endl;
return 0;
}
在我的系统上产生这个输出:
.pdf: application/pdf
.avi: video/avi
关于c++ - 从 C++ 中的扩展获取 MIME 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20634666/