@ -1,4 +1,7 @@
using SqlSugar ;
using System.Net ;
using SharpCompress.Common ;
using SkyWalking.NetworkProtocol.V3 ;
using SqlSugar ;
using Tiobon.Core.DataAccess ;
namespace Tiobon.Core.Controllers ;
@ -109,10 +112,21 @@ public class FileController : BaseApiController
string pathHeader = "wwwroot/files/" + filePath ;
if ( ! Directory . Exists ( pathHeader ) )
Directory . CreateDirectory ( pathHeader ) ;
var fileName = upload . fileName . Replace ( "." + ext , "_" ) + DateTime . Now . ToString ( "yyyyMMddHHmmss" ) ;
//var fileName = upload.fileName.Replace("." + ext, "_") + DateTime.Now.ToString("yyyyMMddHHmmss");
var fileName = upload . fileName ;
filePath = "/files/" + filePath + "/" + $"{fileName}.{ext }" ;
filePath = "/files/" + filePath + "/" + $"{upload. fileName}" ;
//var filepath = Path.Combine(pathHeader, file.FileName);
#region 判断文件是否重复,重复即删除
var webRootPath = _ hostingEnvironment . WebRootPath ;
if ( System . IO . File . Exists ( webRootPath + filePath ) )
System . IO . File . Delete ( webRootPath + filePath ) ;
var file = await _ ghre_AttachmentServices . Delete ( x = > x . AttachmentName = = fileName ) ;
# endregion
using ( var stream = global :: System . IO . File . Create ( "wwwroot/" + filePath ) )
{
await upload . file . CopyToAsync ( stream ) ;
@ -149,6 +163,20 @@ public class FileController : BaseApiController
} ) ;
}
[HttpPost, Route("CheckExists")]
public ServiceResult < bool > CheckExistsAsync ( [ FromBody ] FileUpload upload )
{
var filePath = $"/files/upload/{upload.fileName}" ;
#region 判断文件是否重复,重复即删除
var webRootPath = _ hostingEnvironment . WebRootPath ;
if ( System . IO . File . Exists ( webRootPath + filePath ) )
return Success ( true ) ;
# endregion
return Success ( false ) ;
}
# endregion
@ -165,38 +193,49 @@ public class FileController : BaseApiController
{
var webRootPath = _ hostingEnvironment . WebRootPath ;
using var _ context = ContextFactory . CreateContext ( ) ;
var file = await _ ghre_AttachmentServices . QueryById ( Id ) ;
if ( file = = null )
return Ok ( "找不到文件" ) ;
var filePath = $"{webRootPath}{" \ \ " + file.PhysicsPath}" ;
var contentTypDict = new Dictionary < string , string > {
{ "jpg" , "image/jpeg" } ,
{ "jpeg" , "image/jpeg" } ,
{ "jpe" , "image/jpeg" } ,
{ "png" , "image/png" } ,
{ "gif" , "image/gif" } ,
{ "ico" , "image/x-ico" } ,
{ "tif" , "image/tiff" } ,
{ "tiff" , "image/tiff" } ,
{ "fax" , "image/fax" } ,
{ "wbmp" , "image//vnd.wap.wbmp" } ,
{ "rp" , "image/vnd.rn-realpix" }
} ;
var contentTypeStr = "image/jpeg" ;
//未知的图片类型
contentTypeStr = contentTypDict [ file . AttachFileExtension ] ;
//var contentTypeStr = "image/jpeg";
////未知的图片类型
//contentTypeStr = GetMimeType(file.AttachFileExtension);
using ( var sw = new FileStream ( filePath , FileMode . Open ) )
//using (var sw = new FileStream(filePath, FileMode.Open))
//{
// var bytes = new byte[sw.Length];
// sw.Read(bytes, 0, bytes.Length);
// sw.Close();
// return new FileContentResult(bytes, contentTypeStr);
//}
return File ( new FileStream ( filePath , FileMode . Open ) , file . AttachmentType , $"{file.AttachFileName.Replace(" . " + file.AttachFileExtension, null)}_{DateTime.Now.ToString(" yyyyMMddHHmmss ")}.{file.AttachFileExtension}" ) ;
}
catch ( Exception ex )
{
var bytes = new byte [ sw . Length ] ;
sw . Read ( bytes , 0 , bytes . Length ) ;
sw . Close ( ) ;
return new FileContentResult ( bytes , contentTypeStr ) ;
return Ok ( $"下载异常:{ex.Message}" ) ;
}
}
/// <summary>
/// 获取图片
/// </summary>
/// <param name="path">主键ID</param>
/// <returns></returns>
[HttpGet("DownloadByPath/{path}"), AllowAnonymous]
public async Task < IActionResult > DownloadByPath ( string path )
{
try
{
path = WebUtility . UrlDecode ( path ) ;
var file = await _ ghre_AttachmentServices . QuerySingle ( x = > x . RelativePath = = path ) ;
return await Download ( file . Id ) ;
}
catch ( Exception ex )
{
@ -218,4 +257,589 @@ public class FileController : BaseApiController
}
# endregion
private static IDictionary < string , string > _ mappings = new Dictionary < string , string > ( StringComparer . InvariantCultureIgnoreCase ) {
#region Big freaking list of mime types
// combination of values from Windows 7 Registry and
// from C:\Windows\System32\inetsrv\config\applicationHost.config
// some added, including .7z and .dat
{ ".323" , "text/h323" } ,
{ ".3g2" , "video/3gpp2" } ,
{ ".3gp" , "video/3gpp" } ,
{ ".3gp2" , "video/3gpp2" } ,
{ ".3gpp" , "video/3gpp" } ,
{ ".7z" , "application/x-7z-compressed" } ,
{ ".aa" , "audio/audible" } ,
{ ".AAC" , "audio/aac" } ,
{ ".aaf" , "application/octet-stream" } ,
{ ".aax" , "audio/vnd.audible.aax" } ,
{ ".ac3" , "audio/ac3" } ,
{ ".aca" , "application/octet-stream" } ,
{ ".accda" , "application/msaccess.addin" } ,
{ ".accdb" , "application/msaccess" } ,
{ ".accdc" , "application/msaccess.cab" } ,
{ ".accde" , "application/msaccess" } ,
{ ".accdr" , "application/msaccess.runtime" } ,
{ ".accdt" , "application/msaccess" } ,
{ ".accdw" , "application/msaccess.webapplication" } ,
{ ".accft" , "application/msaccess.ftemplate" } ,
{ ".acx" , "application/internet-property-stream" } ,
{ ".AddIn" , "text/xml" } ,
{ ".ade" , "application/msaccess" } ,
{ ".adobebridge" , "application/x-bridge-url" } ,
{ ".adp" , "application/msaccess" } ,
{ ".ADT" , "audio/vnd.dlna.adts" } ,
{ ".ADTS" , "audio/aac" } ,
{ ".afm" , "application/octet-stream" } ,
{ ".ai" , "application/postscript" } ,
{ ".aif" , "audio/x-aiff" } ,
{ ".aifc" , "audio/aiff" } ,
{ ".aiff" , "audio/aiff" } ,
{ ".air" , "application/vnd.adobe.air-application-installer-package+zip" } ,
{ ".amc" , "application/x-mpeg" } ,
{ ".application" , "application/x-ms-application" } ,
{ ".art" , "image/x-jg" } ,
{ ".asa" , "application/xml" } ,
{ ".asax" , "application/xml" } ,
{ ".ascx" , "application/xml" } ,
{ ".asd" , "application/octet-stream" } ,
{ ".asf" , "video/x-ms-asf" } ,
{ ".ashx" , "application/xml" } ,
{ ".asi" , "application/octet-stream" } ,
{ ".asm" , "text/plain" } ,
{ ".asmx" , "application/xml" } ,
{ ".aspx" , "application/xml" } ,
{ ".asr" , "video/x-ms-asf" } ,
{ ".asx" , "video/x-ms-asf" } ,
{ ".atom" , "application/atom+xml" } ,
{ ".au" , "audio/basic" } ,
{ ".avi" , "video/x-msvideo" } ,
{ ".axs" , "application/olescript" } ,
{ ".bas" , "text/plain" } ,
{ ".bcpio" , "application/x-bcpio" } ,
{ ".bin" , "application/octet-stream" } ,
{ ".bmp" , "image/bmp" } ,
{ ".c" , "text/plain" } ,
{ ".cab" , "application/octet-stream" } ,
{ ".caf" , "audio/x-caf" } ,
{ ".calx" , "application/vnd.ms-office.calx" } ,
{ ".cat" , "application/vnd.ms-pki.seccat" } ,
{ ".cc" , "text/plain" } ,
{ ".cd" , "text/plain" } ,
{ ".cdda" , "audio/aiff" } ,
{ ".cdf" , "application/x-cdf" } ,
{ ".cer" , "application/x-x509-ca-cert" } ,
{ ".chm" , "application/octet-stream" } ,
{ ".class" , "application/x-java-applet" } ,
{ ".clp" , "application/x-msclip" } ,
{ ".cmx" , "image/x-cmx" } ,
{ ".cnf" , "text/plain" } ,
{ ".cod" , "image/cis-cod" } ,
{ ".config" , "application/xml" } ,
{ ".contact" , "text/x-ms-contact" } ,
{ ".coverage" , "application/xml" } ,
{ ".cpio" , "application/x-cpio" } ,
{ ".cpp" , "text/plain" } ,
{ ".crd" , "application/x-mscardfile" } ,
{ ".crl" , "application/pkix-crl" } ,
{ ".crt" , "application/x-x509-ca-cert" } ,
{ ".cs" , "text/plain" } ,
{ ".csdproj" , "text/plain" } ,
{ ".csh" , "application/x-csh" } ,
{ ".csproj" , "text/plain" } ,
{ ".css" , "text/css" } ,
{ ".csv" , "text/csv" } ,
{ ".cur" , "application/octet-stream" } ,
{ ".cxx" , "text/plain" } ,
{ ".dat" , "application/octet-stream" } ,
{ ".datasource" , "application/xml" } ,
{ ".dbproj" , "text/plain" } ,
{ ".dcr" , "application/x-director" } ,
{ ".def" , "text/plain" } ,
{ ".deploy" , "application/octet-stream" } ,
{ ".der" , "application/x-x509-ca-cert" } ,
{ ".dgml" , "application/xml" } ,
{ ".dib" , "image/bmp" } ,
{ ".dif" , "video/x-dv" } ,
{ ".dir" , "application/x-director" } ,
{ ".disco" , "text/xml" } ,
{ ".dll" , "application/x-msdownload" } ,
{ ".dll.config" , "text/xml" } ,
{ ".dlm" , "text/dlm" } ,
{ ".doc" , "application/msword" } ,
{ ".docm" , "application/vnd.ms-word.document.macroEnabled.12" } ,
{ ".docx" , "application/vnd.openxmlformats-officedocument.wordprocessingml.document" } ,
{ ".dot" , "application/msword" } ,
{ ".dotm" , "application/vnd.ms-word.template.macroEnabled.12" } ,
{ ".dotx" , "application/vnd.openxmlformats-officedocument.wordprocessingml.template" } ,
{ ".dsp" , "application/octet-stream" } ,
{ ".dsw" , "text/plain" } ,
{ ".dtd" , "text/xml" } ,
{ ".dtsConfig" , "text/xml" } ,
{ ".dv" , "video/x-dv" } ,
{ ".dvi" , "application/x-dvi" } ,
{ ".dwf" , "drawing/x-dwf" } ,
{ ".dwp" , "application/octet-stream" } ,
{ ".dxr" , "application/x-director" } ,
{ ".eml" , "message/rfc822" } ,
{ ".emz" , "application/octet-stream" } ,
{ ".eot" , "application/octet-stream" } ,
{ ".eps" , "application/postscript" } ,
{ ".etl" , "application/etl" } ,
{ ".etx" , "text/x-setext" } ,
{ ".evy" , "application/envoy" } ,
{ ".exe" , "application/octet-stream" } ,
{ ".exe.config" , "text/xml" } ,
{ ".fdf" , "application/vnd.fdf" } ,
{ ".fif" , "application/fractals" } ,
{ ".filters" , "Application/xml" } ,
{ ".fla" , "application/octet-stream" } ,
{ ".flr" , "x-world/x-vrml" } ,
{ ".flv" , "video/x-flv" } ,
{ ".fsscript" , "application/fsharp-script" } ,
{ ".fsx" , "application/fsharp-script" } ,
{ ".generictest" , "application/xml" } ,
{ ".gif" , "image/gif" } ,
{ ".group" , "text/x-ms-group" } ,
{ ".gsm" , "audio/x-gsm" } ,
{ ".gtar" , "application/x-gtar" } ,
{ ".gz" , "application/x-gzip" } ,
{ ".h" , "text/plain" } ,
{ ".hdf" , "application/x-hdf" } ,
{ ".hdml" , "text/x-hdml" } ,
{ ".hhc" , "application/x-oleobject" } ,
{ ".hhk" , "application/octet-stream" } ,
{ ".hhp" , "application/octet-stream" } ,
{ ".hlp" , "application/winhlp" } ,
{ ".hpp" , "text/plain" } ,
{ ".hqx" , "application/mac-binhex40" } ,
{ ".hta" , "application/hta" } ,
{ ".htc" , "text/x-component" } ,
{ ".htm" , "text/html" } ,
{ ".html" , "text/html" } ,
{ ".htt" , "text/webviewhtml" } ,
{ ".hxa" , "application/xml" } ,
{ ".hxc" , "application/xml" } ,
{ ".hxd" , "application/octet-stream" } ,
{ ".hxe" , "application/xml" } ,
{ ".hxf" , "application/xml" } ,
{ ".hxh" , "application/octet-stream" } ,
{ ".hxi" , "application/octet-stream" } ,
{ ".hxk" , "application/xml" } ,
{ ".hxq" , "application/octet-stream" } ,
{ ".hxr" , "application/octet-stream" } ,
{ ".hxs" , "application/octet-stream" } ,
{ ".hxt" , "text/html" } ,
{ ".hxv" , "application/xml" } ,
{ ".hxw" , "application/octet-stream" } ,
{ ".hxx" , "text/plain" } ,
{ ".i" , "text/plain" } ,
{ ".ico" , "image/x-icon" } ,
{ ".ics" , "application/octet-stream" } ,
{ ".idl" , "text/plain" } ,
{ ".ief" , "image/ief" } ,
{ ".iii" , "application/x-iphone" } ,
{ ".inc" , "text/plain" } ,
{ ".inf" , "application/octet-stream" } ,
{ ".inl" , "text/plain" } ,
{ ".ins" , "application/x-internet-signup" } ,
{ ".ipa" , "application/x-itunes-ipa" } ,
{ ".ipg" , "application/x-itunes-ipg" } ,
{ ".ipproj" , "text/plain" } ,
{ ".ipsw" , "application/x-itunes-ipsw" } ,
{ ".iqy" , "text/x-ms-iqy" } ,
{ ".isp" , "application/x-internet-signup" } ,
{ ".ite" , "application/x-itunes-ite" } ,
{ ".itlp" , "application/x-itunes-itlp" } ,
{ ".itms" , "application/x-itunes-itms" } ,
{ ".itpc" , "application/x-itunes-itpc" } ,
{ ".IVF" , "video/x-ivf" } ,
{ ".jar" , "application/java-archive" } ,
{ ".java" , "application/octet-stream" } ,
{ ".jck" , "application/liquidmotion" } ,
{ ".jcz" , "application/liquidmotion" } ,
{ ".jfif" , "image/pjpeg" } ,
{ ".jnlp" , "application/x-java-jnlp-file" } ,
{ ".jpb" , "application/octet-stream" } ,
{ ".jpe" , "image/jpeg" } ,
{ ".jpeg" , "image/jpeg" } ,
{ ".jpg" , "image/jpeg" } ,
{ ".js" , "application/x-javascript" } ,
{ ".jsx" , "text/jscript" } ,
{ ".jsxbin" , "text/plain" } ,
{ ".latex" , "application/x-latex" } ,
{ ".library-ms" , "application/windows-library+xml" } ,
{ ".lit" , "application/x-ms-reader" } ,
{ ".loadtest" , "application/xml" } ,
{ ".lpk" , "application/octet-stream" } ,
{ ".lsf" , "video/x-la-asf" } ,
{ ".lst" , "text/plain" } ,
{ ".lsx" , "video/x-la-asf" } ,
{ ".lzh" , "application/octet-stream" } ,
{ ".m13" , "application/x-msmediaview" } ,
{ ".m14" , "application/x-msmediaview" } ,
{ ".m1v" , "video/mpeg" } ,
{ ".m2t" , "video/vnd.dlna.mpeg-tts" } ,
{ ".m2ts" , "video/vnd.dlna.mpeg-tts" } ,
{ ".m2v" , "video/mpeg" } ,
{ ".m3u" , "audio/x-mpegurl" } ,
{ ".m3u8" , "audio/x-mpegurl" } ,
{ ".m4a" , "audio/m4a" } ,
{ ".m4b" , "audio/m4b" } ,
{ ".m4p" , "audio/m4p" } ,
{ ".m4r" , "audio/x-m4r" } ,
{ ".m4v" , "video/x-m4v" } ,
{ ".mac" , "image/x-macpaint" } ,
{ ".mak" , "text/plain" } ,
{ ".man" , "application/x-troff-man" } ,
{ ".manifest" , "application/x-ms-manifest" } ,
{ ".map" , "text/plain" } ,
{ ".master" , "application/xml" } ,
{ ".mda" , "application/msaccess" } ,
{ ".mdb" , "application/x-msaccess" } ,
{ ".mde" , "application/msaccess" } ,
{ ".mdp" , "application/octet-stream" } ,
{ ".me" , "application/x-troff-me" } ,
{ ".mfp" , "application/x-shockwave-flash" } ,
{ ".mht" , "message/rfc822" } ,
{ ".mhtml" , "message/rfc822" } ,
{ ".mid" , "audio/mid" } ,
{ ".midi" , "audio/mid" } ,
{ ".mix" , "application/octet-stream" } ,
{ ".mk" , "text/plain" } ,
{ ".mmf" , "application/x-smaf" } ,
{ ".mno" , "text/xml" } ,
{ ".mny" , "application/x-msmoney" } ,
{ ".mod" , "video/mpeg" } ,
{ ".mov" , "video/quicktime" } ,
{ ".movie" , "video/x-sgi-movie" } ,
{ ".mp2" , "video/mpeg" } ,
{ ".mp2v" , "video/mpeg" } ,
{ ".mp3" , "audio/mpeg" } ,
{ ".mp4" , "video/mp4" } ,
{ ".mp4v" , "video/mp4" } ,
{ ".mpa" , "video/mpeg" } ,
{ ".mpe" , "video/mpeg" } ,
{ ".mpeg" , "video/mpeg" } ,
{ ".mpf" , "application/vnd.ms-mediapackage" } ,
{ ".mpg" , "video/mpeg" } ,
{ ".mpp" , "application/vnd.ms-project" } ,
{ ".mpv2" , "video/mpeg" } ,
{ ".mqv" , "video/quicktime" } ,
{ ".ms" , "application/x-troff-ms" } ,
{ ".msi" , "application/octet-stream" } ,
{ ".mso" , "application/octet-stream" } ,
{ ".mts" , "video/vnd.dlna.mpeg-tts" } ,
{ ".mtx" , "application/xml" } ,
{ ".mvb" , "application/x-msmediaview" } ,
{ ".mvc" , "application/x-miva-compiled" } ,
{ ".mxp" , "application/x-mmxp" } ,
{ ".nc" , "application/x-netcdf" } ,
{ ".nsc" , "video/x-ms-asf" } ,
{ ".nws" , "message/rfc822" } ,
{ ".ocx" , "application/octet-stream" } ,
{ ".oda" , "application/oda" } ,
{ ".odc" , "text/x-ms-odc" } ,
{ ".odh" , "text/plain" } ,
{ ".odl" , "text/plain" } ,
{ ".odp" , "application/vnd.oasis.opendocument.presentation" } ,
{ ".ods" , "application/oleobject" } ,
{ ".odt" , "application/vnd.oasis.opendocument.text" } ,
{ ".one" , "application/onenote" } ,
{ ".onea" , "application/onenote" } ,
{ ".onepkg" , "application/onenote" } ,
{ ".onetmp" , "application/onenote" } ,
{ ".onetoc" , "application/onenote" } ,
{ ".onetoc2" , "application/onenote" } ,
{ ".orderedtest" , "application/xml" } ,
{ ".osdx" , "application/opensearchdescription+xml" } ,
{ ".p10" , "application/pkcs10" } ,
{ ".p12" , "application/x-pkcs12" } ,
{ ".p7b" , "application/x-pkcs7-certificates" } ,
{ ".p7c" , "application/pkcs7-mime" } ,
{ ".p7m" , "application/pkcs7-mime" } ,
{ ".p7r" , "application/x-pkcs7-certreqresp" } ,
{ ".p7s" , "application/pkcs7-signature" } ,
{ ".pbm" , "image/x-portable-bitmap" } ,
{ ".pcast" , "application/x-podcast" } ,
{ ".pct" , "image/pict" } ,
{ ".pcx" , "application/octet-stream" } ,
{ ".pcz" , "application/octet-stream" } ,
{ ".pdf" , "application/pdf" } ,
{ ".pfb" , "application/octet-stream" } ,
{ ".pfm" , "application/octet-stream" } ,
{ ".pfx" , "application/x-pkcs12" } ,
{ ".pgm" , "image/x-portable-graymap" } ,
{ ".pic" , "image/pict" } ,
{ ".pict" , "image/pict" } ,
{ ".pkgdef" , "text/plain" } ,
{ ".pkgundef" , "text/plain" } ,
{ ".pko" , "application/vnd.ms-pki.pko" } ,
{ ".pls" , "audio/scpls" } ,
{ ".pma" , "application/x-perfmon" } ,
{ ".pmc" , "application/x-perfmon" } ,
{ ".pml" , "application/x-perfmon" } ,
{ ".pmr" , "application/x-perfmon" } ,
{ ".pmw" , "application/x-perfmon" } ,
{ ".png" , "image/png" } ,
{ ".pnm" , "image/x-portable-anymap" } ,
{ ".pnt" , "image/x-macpaint" } ,
{ ".pntg" , "image/x-macpaint" } ,
{ ".pnz" , "image/png" } ,
{ ".pot" , "application/vnd.ms-powerpoint" } ,
{ ".potm" , "application/vnd.ms-powerpoint.template.macroEnabled.12" } ,
{ ".potx" , "application/vnd.openxmlformats-officedocument.presentationml.template" } ,
{ ".ppa" , "application/vnd.ms-powerpoint" } ,
{ ".ppam" , "application/vnd.ms-powerpoint.addin.macroEnabled.12" } ,
{ ".ppm" , "image/x-portable-pixmap" } ,
{ ".pps" , "application/vnd.ms-powerpoint" } ,
{ ".ppsm" , "application/vnd.ms-powerpoint.slideshow.macroEnabled.12" } ,
{ ".ppsx" , "application/vnd.openxmlformats-officedocument.presentationml.slideshow" } ,
{ ".ppt" , "application/vnd.ms-powerpoint" } ,
{ ".pptm" , "application/vnd.ms-powerpoint.presentation.macroEnabled.12" } ,
{ ".pptx" , "application/vnd.openxmlformats-officedocument.presentationml.presentation" } ,
{ ".prf" , "application/pics-rules" } ,
{ ".prm" , "application/octet-stream" } ,
{ ".prx" , "application/octet-stream" } ,
{ ".ps" , "application/postscript" } ,
{ ".psc1" , "application/PowerShell" } ,
{ ".psd" , "application/octet-stream" } ,
{ ".psess" , "application/xml" } ,
{ ".psm" , "application/octet-stream" } ,
{ ".psp" , "application/octet-stream" } ,
{ ".pub" , "application/x-mspublisher" } ,
{ ".pwz" , "application/vnd.ms-powerpoint" } ,
{ ".qht" , "text/x-html-insertion" } ,
{ ".qhtm" , "text/x-html-insertion" } ,
{ ".qt" , "video/quicktime" } ,
{ ".qti" , "image/x-quicktime" } ,
{ ".qtif" , "image/x-quicktime" } ,
{ ".qtl" , "application/x-quicktimeplayer" } ,
{ ".qxd" , "application/octet-stream" } ,
{ ".ra" , "audio/x-pn-realaudio" } ,
{ ".ram" , "audio/x-pn-realaudio" } ,
{ ".rar" , "application/octet-stream" } ,
{ ".ras" , "image/x-cmu-raster" } ,
{ ".rat" , "application/rat-file" } ,
{ ".rc" , "text/plain" } ,
{ ".rc2" , "text/plain" } ,
{ ".rct" , "text/plain" } ,
{ ".rdlc" , "application/xml" } ,
{ ".resx" , "application/xml" } ,
{ ".rf" , "image/vnd.rn-realflash" } ,
{ ".rgb" , "image/x-rgb" } ,
{ ".rgs" , "text/plain" } ,
{ ".rm" , "application/vnd.rn-realmedia" } ,
{ ".rmi" , "audio/mid" } ,
{ ".rmp" , "application/vnd.rn-rn_music_package" } ,
{ ".roff" , "application/x-troff" } ,
{ ".rpm" , "audio/x-pn-realaudio-plugin" } ,
{ ".rqy" , "text/x-ms-rqy" } ,
{ ".rtf" , "application/rtf" } ,
{ ".rtx" , "text/richtext" } ,
{ ".ruleset" , "application/xml" } ,
{ ".s" , "text/plain" } ,
{ ".safariextz" , "application/x-safari-safariextz" } ,
{ ".scd" , "application/x-msschedule" } ,
{ ".sct" , "text/scriptlet" } ,
{ ".sd2" , "audio/x-sd2" } ,
{ ".sdp" , "application/sdp" } ,
{ ".sea" , "application/octet-stream" } ,
{ ".searchConnector-ms" , "application/windows-search-connector+xml" } ,
{ ".setpay" , "application/set-payment-initiation" } ,
{ ".setreg" , "application/set-registration-initiation" } ,
{ ".settings" , "application/xml" } ,
{ ".sgimb" , "application/x-sgimb" } ,
{ ".sgml" , "text/sgml" } ,
{ ".sh" , "application/x-sh" } ,
{ ".shar" , "application/x-shar" } ,
{ ".shtml" , "text/html" } ,
{ ".sit" , "application/x-stuffit" } ,
{ ".sitemap" , "application/xml" } ,
{ ".skin" , "application/xml" } ,
{ ".sldm" , "application/vnd.ms-powerpoint.slide.macroEnabled.12" } ,
{ ".sldx" , "application/vnd.openxmlformats-officedocument.presentationml.slide" } ,
{ ".slk" , "application/vnd.ms-excel" } ,
{ ".sln" , "text/plain" } ,
{ ".slupkg-ms" , "application/x-ms-license" } ,
{ ".smd" , "audio/x-smd" } ,
{ ".smi" , "application/octet-stream" } ,
{ ".smx" , "audio/x-smd" } ,
{ ".smz" , "audio/x-smd" } ,
{ ".snd" , "audio/basic" } ,
{ ".snippet" , "application/xml" } ,
{ ".snp" , "application/octet-stream" } ,
{ ".sol" , "text/plain" } ,
{ ".sor" , "text/plain" } ,
{ ".spc" , "application/x-pkcs7-certificates" } ,
{ ".spl" , "application/futuresplash" } ,
{ ".src" , "application/x-wais-source" } ,
{ ".srf" , "text/plain" } ,
{ ".SSISDeploymentManifest" , "text/xml" } ,
{ ".ssm" , "application/streamingmedia" } ,
{ ".sst" , "application/vnd.ms-pki.certstore" } ,
{ ".stl" , "application/vnd.ms-pki.stl" } ,
{ ".sv4cpio" , "application/x-sv4cpio" } ,
{ ".sv4crc" , "application/x-sv4crc" } ,
{ ".svc" , "application/xml" } ,
{ ".swf" , "application/x-shockwave-flash" } ,
{ ".t" , "application/x-troff" } ,
{ ".tar" , "application/x-tar" } ,
{ ".tcl" , "application/x-tcl" } ,
{ ".testrunconfig" , "application/xml" } ,
{ ".testsettings" , "application/xml" } ,
{ ".tex" , "application/x-tex" } ,
{ ".texi" , "application/x-texinfo" } ,
{ ".texinfo" , "application/x-texinfo" } ,
{ ".tgz" , "application/x-compressed" } ,
{ ".thmx" , "application/vnd.ms-officetheme" } ,
{ ".thn" , "application/octet-stream" } ,
{ ".tif" , "image/tiff" } ,
{ ".tiff" , "image/tiff" } ,
{ ".tlh" , "text/plain" } ,
{ ".tli" , "text/plain" } ,
{ ".toc" , "application/octet-stream" } ,
{ ".tr" , "application/x-troff" } ,
{ ".trm" , "application/x-msterminal" } ,
{ ".trx" , "application/xml" } ,
{ ".ts" , "video/vnd.dlna.mpeg-tts" } ,
{ ".tsv" , "text/tab-separated-values" } ,
{ ".ttf" , "application/octet-stream" } ,
{ ".tts" , "video/vnd.dlna.mpeg-tts" } ,
{ ".txt" , "text/plain" } ,
{ ".u32" , "application/octet-stream" } ,
{ ".uls" , "text/iuls" } ,
{ ".user" , "text/plain" } ,
{ ".ustar" , "application/x-ustar" } ,
{ ".vb" , "text/plain" } ,
{ ".vbdproj" , "text/plain" } ,
{ ".vbk" , "video/mpeg" } ,
{ ".vbproj" , "text/plain" } ,
{ ".vbs" , "text/vbscript" } ,
{ ".vcf" , "text/x-vcard" } ,
{ ".vcproj" , "Application/xml" } ,
{ ".vcs" , "text/plain" } ,
{ ".vcxproj" , "Application/xml" } ,
{ ".vddproj" , "text/plain" } ,
{ ".vdp" , "text/plain" } ,
{ ".vdproj" , "text/plain" } ,
{ ".vdx" , "application/vnd.ms-visio.viewer" } ,
{ ".vml" , "text/xml" } ,
{ ".vscontent" , "application/xml" } ,
{ ".vsct" , "text/xml" } ,
{ ".vsd" , "application/vnd.visio" } ,
{ ".vsi" , "application/ms-vsi" } ,
{ ".vsix" , "application/vsix" } ,
{ ".vsixlangpack" , "text/xml" } ,
{ ".vsixmanifest" , "text/xml" } ,
{ ".vsmdi" , "application/xml" } ,
{ ".vspscc" , "text/plain" } ,
{ ".vss" , "application/vnd.visio" } ,
{ ".vsscc" , "text/plain" } ,
{ ".vssettings" , "text/xml" } ,
{ ".vssscc" , "text/plain" } ,
{ ".vst" , "application/vnd.visio" } ,
{ ".vstemplate" , "text/xml" } ,
{ ".vsto" , "application/x-ms-vsto" } ,
{ ".vsw" , "application/vnd.visio" } ,
{ ".vsx" , "application/vnd.visio" } ,
{ ".vtx" , "application/vnd.visio" } ,
{ ".wav" , "audio/wav" } ,
{ ".wave" , "audio/wav" } ,
{ ".wax" , "audio/x-ms-wax" } ,
{ ".wbk" , "application/msword" } ,
{ ".wbmp" , "image/vnd.wap.wbmp" } ,
{ ".wcm" , "application/vnd.ms-works" } ,
{ ".wdb" , "application/vnd.ms-works" } ,
{ ".wdp" , "image/vnd.ms-photo" } ,
{ ".webarchive" , "application/x-safari-webarchive" } ,
{ ".webtest" , "application/xml" } ,
{ ".wiq" , "application/xml" } ,
{ ".wiz" , "application/msword" } ,
{ ".wks" , "application/vnd.ms-works" } ,
{ ".WLMP" , "application/wlmoviemaker" } ,
{ ".wlpginstall" , "application/x-wlpg-detect" } ,
{ ".wlpginstall3" , "application/x-wlpg3-detect" } ,
{ ".wm" , "video/x-ms-wm" } ,
{ ".wma" , "audio/x-ms-wma" } ,
{ ".wmd" , "application/x-ms-wmd" } ,
{ ".wmf" , "application/x-msmetafile" } ,
{ ".wml" , "text/vnd.wap.wml" } ,
{ ".wmlc" , "application/vnd.wap.wmlc" } ,
{ ".wmls" , "text/vnd.wap.wmlscript" } ,
{ ".wmlsc" , "application/vnd.wap.wmlscriptc" } ,
{ ".wmp" , "video/x-ms-wmp" } ,
{ ".wmv" , "video/x-ms-wmv" } ,
{ ".wmx" , "video/x-ms-wmx" } ,
{ ".wmz" , "application/x-ms-wmz" } ,
{ ".wpl" , "application/vnd.ms-wpl" } ,
{ ".wps" , "application/vnd.ms-works" } ,
{ ".wri" , "application/x-mswrite" } ,
{ ".wrl" , "x-world/x-vrml" } ,
{ ".wrz" , "x-world/x-vrml" } ,
{ ".wsc" , "text/scriptlet" } ,
{ ".wsdl" , "text/xml" } ,
{ ".wvx" , "video/x-ms-wvx" } ,
{ ".x" , "application/directx" } ,
{ ".xaf" , "x-world/x-vrml" } ,
{ ".xaml" , "application/xaml+xml" } ,
{ ".xap" , "application/x-silverlight-app" } ,
{ ".xbap" , "application/x-ms-xbap" } ,
{ ".xbm" , "image/x-xbitmap" } ,
{ ".xdr" , "text/plain" } ,
{ ".xht" , "application/xhtml+xml" } ,
{ ".xhtml" , "application/xhtml+xml" } ,
{ ".xla" , "application/vnd.ms-excel" } ,
{ ".xlam" , "application/vnd.ms-excel.addin.macroEnabled.12" } ,
{ ".xlc" , "application/vnd.ms-excel" } ,
{ ".xld" , "application/vnd.ms-excel" } ,
{ ".xlk" , "application/vnd.ms-excel" } ,
{ ".xll" , "application/vnd.ms-excel" } ,
{ ".xlm" , "application/vnd.ms-excel" } ,
{ ".xls" , "application/vnd.ms-excel" } ,
{ ".xlsb" , "application/vnd.ms-excel.sheet.binary.macroEnabled.12" } ,
{ ".xlsm" , "application/vnd.ms-excel.sheet.macroEnabled.12" } ,
{ ".xlsx" , "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" } ,
{ ".xlt" , "application/vnd.ms-excel" } ,
{ ".xltm" , "application/vnd.ms-excel.template.macroEnabled.12" } ,
{ ".xltx" , "application/vnd.openxmlformats-officedocument.spreadsheetml.template" } ,
{ ".xlw" , "application/vnd.ms-excel" } ,
{ ".xml" , "text/xml" } ,
{ ".xmta" , "application/xml" } ,
{ ".xof" , "x-world/x-vrml" } ,
{ ".XOML" , "text/plain" } ,
{ ".xpm" , "image/x-xpixmap" } ,
{ ".xps" , "application/vnd.ms-xpsdocument" } ,
{ ".xrm-ms" , "text/xml" } ,
{ ".xsc" , "application/xml" } ,
{ ".xsd" , "text/xml" } ,
{ ".xsf" , "text/xml" } ,
{ ".xsl" , "text/xml" } ,
{ ".xslt" , "text/xml" } ,
{ ".xsn" , "application/octet-stream" } ,
{ ".xss" , "application/xml" } ,
{ ".xtp" , "application/octet-stream" } ,
{ ".xwd" , "image/x-xwindowdump" } ,
{ ".z" , "application/x-compress" } ,
{ ".zip" , "application/x-zip-compressed" } ,
# endregion
} ;
public static string GetMimeType ( string extension )
{
if ( extension = = null )
{
throw new ArgumentNullException ( "extension" ) ;
}
if ( ! extension . StartsWith ( "." ) )
{
extension = "." + extension ;
}
string mime ;
return _ mappings . TryGetValue ( extension , out mime ) ? mime : "application/octet-stream" ;
}
}