【问题标题】:Download from byte array from CRM从 CRM 的字节数组下载
【发布时间】:2014-01-30 03:16:05
【问题描述】:

在 Microsoft CRM 中,我们有一个应获取和下载的附件。所以我有一个字节数组代表获取的文件:

byte[] fileContent = Convert.FromBase64String(query.DocumentBody);

如果我使用这个代码,当然可以下载它,但文件路径应该是硬编码的(比如C:/<folder name>/),我不希望这样。

using (FileStream fileStream = new FileStream(path + query.FileName, FileMode.OpenOrCreate))
{
    byte[] fileContent = Convert.FromBase64String(query.DocumentBody);
    fileStream.Write(fileContent, 0, fileContent.Length);

    //Response.OutputStream.WriteByte(fileContent);
}

如何从字节数组下载文件?我已经尝试过寻找方法,但它都需要一个文件路径,并且我无法提供该文件路径,因为该对象是一个字节数组。

【问题讨论】:

  • 我查看了这些链接,就像我在帖子中所说的那样,我不想提供应该保存下载的路径。我希望它默认保存在默认下载文件夹中。现在我正在以硬编码的方式进行操作,它将保存在驱动器 C:/ 上,它会带来安全和访问问题。
  • 我想我完全错过了你的问题。您正在编写什么样的应用程序/站点,您希望将文件存储在特定路径的什么位置(服务器/带有浏览器的机器/其他地方)?
  • 我希望将它(字节数组中的文件)存储到访问该站点的客户端计算机的默认下载文件夹中。
  • 你无法控制它。除了提供带有“content-disposition”标头的推荐文件 name 之外,您无能为力。

标签: c# asp.net crm


【解决方案1】:

我不确定你的问题到底是什么,但下面应该将字节数组写入输出流。您可能需要“content-disposition”标头作为文件名和“content-type”,让浏览器提供“下载”而不是直接打开:

Response.OutputStream..Write(fileContent , 0, fileContent .Length);

【讨论】:

  • 是的,我正在尝试这个。我的代码对吗? Response.ContentType = 查询.Type; Response.AddHeader("content-disposition", "attachment;filename=" + query.FileName); Response.OutputStream.Write(fileContent, 0, fileContent.Length);响应。结束(); Response.Flush(); Response.Close();
  • 编译和运行这个项目真的需要很长时间。如果此代码有效,将更新您。谢谢老兄。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
相关资源
最近更新 更多