【问题标题】:Upload/Download data directly to Sql Server将数据直接上传/下载到 Sql Server
【发布时间】:2012-12-31 12:28:16
【问题描述】:

我正在开发一个服务器/客户端应用程序,其中客户端能够上传/下载文件,该文件将作为 varbinay(max) 存储在 SQL Server (2012) 中。问题是我希望将文件直接上传到数据库而不将文件保存在服务器的硬盘上,使用 ReadAllBytes 方法,该方法只接受路径参数。

这是服务端使用的代码片段:

HttpPostedFile file1 = context.Request.Files[0];
            byte[] buffer = new byte[file1.ContentLength];
            file1.InputStream.Read(buffer, 0, file1.ContentLength);
            

这是用户代码,以便从数据库中的数据写入文件:

foreach (var file in list)
{
    System.IO.File.WriteAllBytes(path + file.FileName, file.FileContents);
}

【问题讨论】:

  • 所以...不要使用 ReadAllBytes?
  • 那我应该用什么?
  • 不相关,但您是否查看了filestream 数据类型而不是varbinary(max)
  • 那么我应该使用什么来将文件存储在数据库中(列的类型)?
  • 如果您不想写入磁盘,请不要使用 File 类中的方法。避免直接使用磁盘不是重点吗?

标签: c# asp.net entity-framework sql-server-2012


【解决方案1】:

HttpPostedFile 带有一个可以读取的输入流。将其读入字节数组,然后将其存储在数据库中。或者,如果您的数据库接口(在 EF 的情况下这不太可能)直接接受流,则按原样放入,

请注意,ASP.NET(或者是 IIS?)可能会在磁盘上临时存储文件上传,如果它非常大的话。

【讨论】:

  • 感谢您的快速回答,我正在研究它!
  • 问题是当我尝试从服务器读取文件时,它们已损坏。但只有简单的文本文件有效!
  • @kad_87 那么也许你应该展示一些代码并描述你真正的问题是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多