【问题标题】:Returing file from DB but failing to write to FileStream [duplicate]从数据库返回文件但无法写入 FileStream [重复]
【发布时间】:2018-07-15 16:23:33
【问题描述】:

我收到来自前端的请求以获取文件。

所以我在我的 SQL DB 中保存了一个字节数组,我看起来像使用 File 结果我需要返回一个从字节数组转换而来的 FileStream

我尝试按照MSDN 执行此操作,使用从我的数据库中获取的字节数组,但在线上出现错误

using(FileStream fileStream = new FileStream(fileName, FileMode.Create))
{

拒绝访问路径“C:\Program Files (x86)\IIS Express\Test.docx”。

显然,我知道发生了什么。它使用fileName 作为查找文件的路径,而不是创建新文件。为什么会这样?如何将我的字节数组作为 FileStream 中的文件返回?如果我需要返回文件作为响应,我是否应该将文件写入磁盘?

【问题讨论】:

  • 这与 FileStream 或字节无关 - 请阅读错误消息。您不能对该文件夹执行文件 IO,并且多年来一直如此。
  • 以管理员身份运行visual studio
  • 我已经编辑了这个问题,因为看起来您正在谈论某种返回文件响应的 WebServer。如果这不是对问题的正确解释,请随时回复。我使用 MVC 版本作为副本,但如果您需要 ASP 版本 - stackoverflow.com/questions/14935205/…

标签: c#


【解决方案1】:

FileStream 用于处理磁盘上的文件。将文件保存到磁盘,然后重新读取并将其返回给用户是效率低下的。使用MemoryStream,它采用byte[]

因为听起来您使用的是 ASP.NET MVC,所以您也可以使用您的 byte[] 调用 File

【讨论】:

  • 那么在什么情况下会使用FileStreamWriteByte呢? WriteByte 文档,至少对我而言,似乎暗示它将用于我认为的情况,因为以下行:“The following code example shows how to write data to a file, byte by byte”。但显然我误解了这一点。
  • @JunKang 当你想将单个字节写入磁盘时使用它。
猜你喜欢
  • 1970-01-01
  • 2013-07-06
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多