1

我正在开发一个服务器/客户端应用程序,其中客户端能够上传/下载文件,该文件将作为 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);
}
4

1 回答 1

1

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

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

于 2012-12-31T12:29:58.410 回答