-1

我正在使用 ASP.NET Core 控制台应用程序制作一个微应用程序,我需要.docx从服务器数据库中检索一个文件。

有什么例子或建议吗?

4

2 回答 2

0

只需使用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();
                }
            }
于 2020-04-21T17:19:22.837 回答
0

我建议使用新的 .Net Core 3.1 Windows 服务模板。我最近写了 3 个从其他数据源更新数据库表的小服务。一个是 LDAP,另一个是 SFTP 服务器上可用的 Excel 文件。

根据您的用例,我建议使用 SqlConnection 类连接到 SQL 服务器,并从那里访问文档,或者使用 SFTP(数据库服务器或不使用数据库服务器)访问文档。有一些适用于 .Net Core 的 SFTP 库和大量在线教程。

在任何一种情况下,您都可以使用首选连接将文件作为某种数据流在本地下载。将文件本地下载到服务器后,您可以进一步利用 SFTP 将文件发送到网络上任何您想要的位置。

问题:为什么要从“数据库”服务器下载 docx 文件?docx 文件是否只是“存在”在服务器上,该服务器也恰好在其上托管数据库?

于 2020-04-21T15:47:54.410 回答