gpt4 book ai didi

c++ - 从 C++ 中的扩展获取 MIME 类型

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:15 24 4
gpt4 key购买 nike

有什么方法可以在给定文件扩展名的情况下获取 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com