내가 한 방법은 잘 알려진 확장명과 해당 MIME 형식 목록을 유지하는 것입니다. 확장명이 발견되지 않으면 그냥 application/octet-stream
으로 반환하십시오. 그 이유는이 MIME 유형이 보안 설정에 따라 브라우저가 운영 체제로 전달할 수 있도록 브라우저가 해당 파일 유형의 기본 편집기를 여는 응용 프로그램 (예 : exe)에 적용되기 때문입니다. 당신이 받아들이고 사용자에게 전송할 수있는 모든 유형의 파일에 대한 보안 의미를 고려하십시오.
<MimeTypes>
<MimeType Type="application/mac-binhex40" Extensions=".hqx"/>
<MimeType Type="application/msword" Extensions=".doc;.docx"/>
<MimeType Type="application/pdf" Extensions=".pdf"/>
<MimeType Type="application/postscript" Extensions=".ai;.eps;.ps"/>
<MimeType Type="application/rtf" Extensions=".rtf"/>
<MimeType Type="application/vnd.ms-excel"
Extensions=".xla;.xlc;.xlm;.xls;.xlt;.xlw;.xlsx"/>
<MimeType Type="application/vnd.ms-outlook" Extensions=".msg"/>
<MimeType Type="application/vnd.ms-powerpoint"
Extensions=".pot;.pps;.ppt;.pptx"/>
<MimeType Type="application/vnd.ms-works" Extensions=".wcm;.wdb;.wks;.wps"/>
<MimeType Type="application/x-compress" Extensions=".z"/>
<MimeType Type="application/x-compressed" Extensions=".tgz"/>
<MimeType Type="application/x-gzip" Extensions=".gz"/>
<MimeType Type="application/x-msaccess" Extensions=".mdb"/>
<MimeType Type="application/x-msmetafile" Extensions=".wmf"/>
<MimeType Type="application/x-mspublisher" Extensions=".pub"/>
<MimeType Type="application/x-msschedule" Extensions=".scd"/>
<MimeType Type="application/x-msterminal" Extensions=".trm"/>
<MimeType Type="application/x-mswrite" Extensions=".wri"/>
<MimeType Type="application/x-tar" Extensions=".tar"/>
<MimeType Type="application/zip" Extensions=".zip"/>
<MimeType Type="audio/basic" Extensions=".au;.snd"/>
<MimeType Type="audio/mid" Extensions=".mid;.rmi"/>
<MimeType Type="audio/mpeg" Extensions=".mp3"/>
<MimeType Type="audio/x-aiff" Extensions=".aif;.aifc;.aiff"/>
<MimeType Type="audio/x-pn-realaudio" Extensions=".ra;.ram"/>
<MimeType Type="audio/x-wav" Extensions=".wav"/>
<MimeType Type="image/bmp" Extensions=".bmp"/>
<MimeType Type="image/gif" Extensions=".gif"/>
<MimeType Type="image/jpeg" Extensions=".jpe;.jpeg;.jpg"/>
<MimeType Type="image/pipeg" Extensions=".jfif"/>
<MimeType Type="image/tiff" Extensions=".tif;.tiff"/>
<!--Substitute the following two for text/plain if you're sure bad html
won't get rendered in the browser-->
<!--<MimeType Type="text/html" Extensions=".mht;.html;.htm"/>-->
<!--<MimeType Type="text/plain" Extensions=".txt"/>-->
<MimeType Type="text/plain" Extensions=".txt;.html;.htm"/>
<MimeType Type="text/richtext" Extensions=".rtx"/>
<MimeType Type="text/tab-separated-values" Extensions=".tsv"/>
<MimeType Type="video/mpeg" Extensions=".mp2;.mpa;.mpe;.mpeg;.mpg;.mpv2"/>
<MimeType Type="video/quicktime" Extensions=".mov;.qt"/>
<MimeType Type="video/x-la-asf" Extensions=".lsf;.lsx;.asf;.asr;.asx;"/>
<MimeType Type="video/x-msvideo" Extensions=".avi"/>
</MimeTypes>
여기이 (의사 -like C#)를 사용하는 방법의 예 :
는 여기에 일반적으로 사용하는 목록입니다.
public string GetMimeType(string ext)
{
// who would load the file on every method call? That's just dumb
var mimes = XElement.Load("MyMimeTypesLolKThx.xml");
var result = from x in mimes.Elements()
where Contains(x, ext)
select x.Attribute("Type");
return result.FirstOrDefault() ?? "application/octet-stream";
}
public bool Contains(XElement el, string ext)
{
return el.Attribute("Extensions").Value.Contains(ext);
}
@Will,이 목록을 탐색하고 적절한 MIME 유형을 가져 오는 컨트롤러에 코드 조각을 표시 할 수 있습니까? 답변 해 주셔서 대단히 감사합니다! – Godel
죄송합니다. 이것은 공개 된 모든 정보입니다 (위키피디아와 다른 출처에서 추려 냈습니다). 그러나 그것을 통과하는 데 사용 된 코드는 오픈 소스가 아닙니다. 게다가, 그것의 2.0 구성 물건, 꽤 무거운 무게입니다. 그러나 나는 당신에게 그것을하는 방법의 견본을 줄 것이다. – Will
@Will이 솔루션을 이용해 주셔서 감사합니다. 귀하의 답변은 거의 2 세입니다. 아직도 당신이 선호하는 해결책입니까? – gsharp