首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在silverlight SaveFileDialog中设置文件的内容类型

在silverlight SaveFileDialog中设置文件的内容类型
EN

Stack Overflow用户
提问于 2011-06-28 17:10:07
回答 2查看 762关注 0票数 0

正如标题所说,有没有办法在Silverlight SaveFileDialog中设置文件的内容类型?我还没有找到一种方法,如果不可能,我也不会感到惊讶,我只是想问一下,看看其他人是否确实知道。

EN

回答 2

Stack Overflow用户

发布于 2011-08-04 02:50:10

您要查找的是上传的文件的Mime类型。我假设这将在Silverlight中工作,我看不出为什么不可以,但是我从来没有在那个环境中使用过它。您需要添加以下内容:

代码语言:javascript
运行
复制
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;
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2011-06-28 17:51:48

代码语言:javascript
运行
复制
 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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6504143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档