我正在使用 ASP.NET Core 控制台应用程序制作一个微应用程序,我需要.docx从服务器数据库中检索一个文件。
有什么例子或建议吗?
我正在使用 ASP.NET Core 控制台应用程序制作一个微应用程序,我需要.docx从服务器数据库中检索一个文件。
有什么例子或建议吗?
只需使用SqlClient将数据作为 Stream 和 CopyTo 读取为 FileStream。例如
var fn = "Seat Assembly.doc";
var outFile = $@"c:\\temp\\{fn}";
using (var con = new SqlConnection("server=localhost;database=AdventureWorks2017;Integrated Security=true"))
{
con.Open();
var cmd = con.CreateCommand();
cmd.CommandText = @"
select Document
from production.document
where FileName = @fn";
cmd.Parameters.Add(new SqlParameter("@fn", fn));
using (var rdr = cmd.ExecuteReader())
using (var fs = File.OpenWrite(outFile))
{
if (!rdr.Read())
{
throw new InvalidOperationException($"File not found {fn}");
}
rdr.GetStream(0).CopyTo(fs);
fs.Close();
}
}
我建议使用新的 .Net Core 3.1 Windows 服务模板。我最近写了 3 个从其他数据源更新数据库表的小服务。一个是 LDAP,另一个是 SFTP 服务器上可用的 Excel 文件。
根据您的用例,我建议使用 SqlConnection 类连接到 SQL 服务器,并从那里访问文档,或者使用 SFTP(数据库服务器或不使用数据库服务器)访问文档。有一些适用于 .Net Core 的 SFTP 库和大量在线教程。
在任何一种情况下,您都可以使用首选连接将文件作为某种数据流在本地下载。将文件本地下载到服务器后,您可以进一步利用 SFTP 将文件发送到网络上任何您想要的位置。
问题:为什么要从“数据库”服务器下载 docx 文件?docx 文件是否只是“存在”在服务器上,该服务器也恰好在其上托管数据库?