2011-06-28 3 views

Répondre

0
this.dialog = new SaveFileDialog(); 

      try 
      { 
       this.dialog.DefaultExt = ".txt"; 
       this.dialog.Filter = "Text Files|*.txt|Log Files|*.log|All Files|*.*"; 
       this.dialog.FilterIndex = 2; 
      } 
      catch (Exception ex) 
      { 
       this.tblError.Text = "Error configuring SaveFileDialog: " + ex.Message; 
      } 
+0

Ceci est juste le réglage du filtre. Je veux que le navigateur qui héberge l'application sache quel type de contenu est. – MrW

1

Ce que vous cherchez est le type Mime du fichier téléchargé. Je suppose que cela fonctionnera dans Silverlight et je ne vois pas pourquoi, mais je ne l'ai jamais utilisé dans ce contexte. Vous devez ajouter ce qui suit:

using System.Reflection; 
using System.Runtime.InteropServices; 

[System.Runtime.InteropServices.DllImport(@"urlmon.dll", CharSet = CharSet.Auto)] 
private extern static System.UInt32 FindMimeFromData(
    System.UInt32 pBC, 
    [MarshalAs(UnmanagedType.LPStr)] System.String pwzUrl, 
    [MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer, 
    System.UInt32 cbSize, 
    [MarshalAs(UnmanagedType.LPStr)] System.String pwzMimeProposed, 
    System.UInt32 dwMimeFlags, 
    out System.UInt32 ppwzMimeOut, 
    System.UInt32 dwReserverd 
); 

public void SomeMethod(string fileName) 
{ 
    string mimeType = getMimeFromFile(fileName); 

    if (mimeType == "text/plain") 
{ 
     // do something 
} 
} 

private string getMimeFromFile(string filename) 
    { 
     if (!File.Exists(filename)) 
      throw new FileNotFoundException(filename + " not found"); 

     byte[] buffer = new byte[256]; 
     using (FileStream fs = new FileStream(filename, FileMode.Open)) 
     { 
      if (fs.Length >= 256) 
       fs.Read(buffer, 0, 256); 
      else 
       fs.Read(buffer, 0, (int)fs.Length); 
     } 
     try 
     { 
      System.UInt32 mimetype; 
      FindMimeFromData(0, null, buffer, 256, null, 0, out mimetype, 0); 
      System.IntPtr mimeTypePtr = new IntPtr(mimetype); 
      string mime = Marshal.PtrToStringUni(mimeTypePtr); 
      Marshal.FreeCoTaskMem(mimeTypePtr); 
      return mime; 
     } 
     catch (Exception ex) 
     { 
      return ex.Message; 
     } 
    } 
Questions connexes