• 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Mimetype nedir?

 
#1

Asp.net mimetype nasıl tespit edilir?

Mimetype
, her farklı uzantıya ait tanımlanmış farklı kimlik bilgisidir. Web tarayıcıları dosyaları ayırt etmek için bu yöntemi kullanır. 


Asp.net ile uygulama geliştirirken dosya upload kısmında belirli dosyaları kısıtlamak için uzantısı yerine mimetype kontrolü daha etkili bir çözümdür. Uzantısı değiştirilip bir exe upload edilebilir. Mimetype kontrolü için farklı yöntemler vardır. Ancak bazıları sunucu bazlı kontrol gerçekleştirmektedir. Sunucu bazlı kontrolden kasıt sunucuda kurulu olan türleri tespit etmektedir. Mimetype kontrolü için sunucuda o türün kurulu olmasına gerek duyulmamalıdır. Aşağıdaki class herhangi bir sunucu bazlı olmadan her sunucuda bu kontrolü gerekleştirmeye yardımcı olacaktır. Aşağıdaki class'ı kullanarak yüklenecek dosyanın mimetype'ını tespit edebilirsiniz. 



public class MimeType
{
   private static readonly byte[] BMP = { 66, 77 };
   private static readonly byte[] DOC = { 208, 207, 17, 224, 161, 177, 26, 225 };
   private static readonly byte[] EXE_DLL = { 77, 90 };
   private static readonly byte[] GIF = { 71, 73, 70, 56 };
   private static readonly byte[] ICO = { 0, 0, 1, 0 };
   private static readonly byte[] JPG = { 255, 216, 255 };
   private static readonly byte[] MP3 = { 255, 251, 48 };
   private static readonly byte[] OGG = { 79, 103, 103, 83, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0 };
   private static readonly byte[] PDF = { 37, 80, 68, 70, 45, 49, 46 };
   private static readonly byte[] PNG = { 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82 };
   private static readonly byte[] RAR = { 82, 97, 114, 33, 26, 7, 0 };
   private static readonly byte[] SWF = { 70, 87, 83 };
   private static readonly byte[] TIFF = { 73, 73, 42, 0 };
   private static readonly byte[] TORRENT = { 100, 56, 58, 97, 110, 110, 111, 117, 110, 99, 101 };
   private static readonly byte[] TTF = { 0, 1, 0, 0, 0 };
   private static readonly byte[] WAV_AVI = { 82, 73, 70, 70 };
   private static readonly byte[] WMV_WMA = { 48, 38, 178, 117, 142, 102, 207, 17, 166, 217, 0, 170, 0, 98, 206, 108 };
   private static readonly byte[] ZIP_DOCX = { 80, 75, 3, 4 };

   public  string GetMimeType(byte[] file, string fileName)
   {

       string mime = "application/octet-stream"; //DEFAULT UNKNOWN MIME TYPE

       //Ensure that the filename isn't empty or null
       if (string.IsNullOrWhiteSpace(fileName))
       {
           return mime;
       }

       //Get the file extension
       string extension = Path.GetExtension(fileName) == null
                              ? string.Empty
                              : Path.GetExtension(fileName).ToUpper();

       //Get the MIME Type
       if (file.Take(2).SequenceEqual(BMP))
       {
           mime = "image/bmp";
       }
       else if (file.Take(8).SequenceEqual(DOC))
       {
           mime = "application/msword";
       }
       else if (file.Take(2).SequenceEqual(EXE_DLL))
       {
           mime = "application/x-msdownload"; //both use same mime type
       }
       else if (file.Take(4).SequenceEqual(GIF))
       {
           mime = "image/gif";
       }
       else if (file.Take(4).SequenceEqual(ICO))
       {
           mime = "image/x-icon";
       }
       else if (file.Take(3).SequenceEqual(JPG))
       {
           mime = "image/jpeg";
       }
       else if (file.Take(3).SequenceEqual(MP3))
       {
           mime = "audio/mpeg";
       }
       else if (file.Take(14).SequenceEqual(OGG))
       {
           if (extension == ".OGX")
           {
               mime = "application/ogg";
           }
           else if (extension == ".OGA")
           {
               mime = "audio/ogg";
           }
           else
           {
               mime = "video/ogg";
           }
       }
       else if (file.Take(7).SequenceEqual(PDF))
       {
           mime = "application/pdf";
       }
       else if (file.Take(16).SequenceEqual(PNG))
       {
           mime = "image/png";
       }
       else if (file.Take(7).SequenceEqual(RAR))
       {
           mime = "application/x-rar-compressed";
       }
       else if (file.Take(3).SequenceEqual(SWF))
       {
           mime = "application/x-shockwave-flash";
       }
       else if (file.Take(4).SequenceEqual(TIFF))
       {
           mime = "image/tiff";
       }
       else if (file.Take(11).SequenceEqual(TORRENT))
       {
           mime = "application/x-bittorrent";
       }
       else if (file.Take(5).SequenceEqual(TTF))
       {
           mime = "application/x-font-ttf";
       }
       else if (file.Take(4).SequenceEqual(WAV_AVI))
       {
           mime = extension == ".AVI" ? "video/x-msvideo" : "audio/x-wav";
       }
       else if (file.Take(16).SequenceEqual(WMV_WMA))
       {
           mime = extension == ".WMA" ? "audio/x-ms-wma" : "video/x-ms-wmv";
       }
       else if (file.Take(4).SequenceEqual(ZIP_DOCX))
       {
           mime = extension == ".DOCX" ? "application/vnd.openxmlformats-officedocument.wordprocessingml.document" : "application/x-zip-compressed";
       }

       return mime;
   }


}




Bul
Alıntı


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Sql injection nedir? tuğrul 0 2,514 09-05-2017, Saat: 12:43
Son Mesaj: tuğrul

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Bu konuyu görüntüleyen kullanıcı(lar):
1 Ziyaretçi

   
Türkçe Çeviri: Emre KRMN, Kodlayanlar MyBB, © 2002-2022 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-∞ Tüm hakları saklıdır.