【问题标题】:downloading email attachment in Silverlight在 Silverlight 中下载电子邮件附件
【发布时间】:2012-06-06 08:13:25
【问题描述】:

我正在使用 VS2010、C# 开发基于 Web(浏览器内)的 Silverlight 4 应用程序,我正在使用 IMAP 阅读电子邮件(目前是 gmail),我在 Silverlight 中使用 WCF 来访问 gmail 数据。一切正常,但我在下载附件时遇到问题,我可以在字节数组中获取电子邮件附件,使用 Response.Stream 或 File.WriteAllBytes(在 ASP.NET 页面中)保存这些字节没有问题。但是当我想将它们保存在我的 SL 应用程序中时,我遇到了两个问题:似乎我不能在我的 WCF 中使用 Response,而且 File.WriteAllBytes 给我这个错误:不允许文件操作,拒绝访问 myfilename。在我的 SL 应用程序中下载附件的选项有哪些?我应该将我的文件数据作为 byte[] 返回到 SL 应用程序,还是应该将它们直接保存在 WCF 中?

我应该使用什么方法?回复?文件?或者别的,谢谢

【问题讨论】:

  • 您能否说明您能否在 Silverlight 中以 byte[] 的形式获取附件?
  • 是的,正如我所说,我可以在 Silverlight 中将附件文件作为字节数组保存,但我无法将其保存到客户端磁盘!

标签: c# file-io silverlight-4.0


【解决方案1】:

这是您将byte[] 保存到 SL4 中的文件的方式:

    private void SaveFile(byte[] bytes)
    {
        SaveFileDialog saveDialog = new SaveFileDialog();
        saveDialog.DefaultExt = ".stuff";
        saveDialog.Filter = "Funky Stuff File|*.stuff|All Files|*.*";
        saveDialog.FilterIndex = 1;
        bool? dialogResult = saveDialog.ShowDialog();
        if (dialogResult == true)
        {
            using (Stream ms = (Stream)saveDialog.OpenFile())
            {
                ms.Write(bytes, 0, bytes.Length);
                ms.Close();
            }
        }
    }

【讨论】:

  • 我昨天使用了 SaveFileDialog,但直到我关闭我的项目才创建文件,但它现在可以工作了!谢谢,有什么办法可以让这个窗口像 ASP.NET 文件下载窗口一样?例如,我可以将文件名修复为已知文件名(它是一个邮件附件),我应该使用默认文件名吗?
  • 出于安全考虑,您不能在 Silverlight 的 SaveFileDialog 中使用默认文件名。至于让您的窗口更像 ASP.NET 文件下载窗口,我无法从头顶告诉您,但听起来并非不可能。我不是 ASP 人,但也许有一种方法可以通过托管站点调用文件下载...但是您可能必须在客户端和服务器之间来回发送文件...认为我对此太过分了:)
  • 或尝试探索提升信任或隔离存储可能带来的影响
  • 感谢 StaWho,感谢 Stackoverflow!它工作得很好!当然我应该找到一种方法来使用默认文件名,但是扩展名很好,你帮了我很多
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 2021-09-29
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
相关资源
最近更新 更多