Как извлечь файл docx из SQL базы данных сервера в ASP. NET консольное приложение ядра? - PullRequest
0 голосов
/ 21 апреля 2020

Я создаю микро-приложение, используя ASP. NET Базовое консольное приложение, и мне нужно получить файл .docx из базы данных сервера.

Какие-либо примеры или предложения?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Просто используйте SqlClient для чтения данных в виде потока и копирования в FileStream. EG

            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();
                }
            }
0 голосов
/ 21 апреля 2020

Я бы порекомендовал использовать новый. Net Core 3.1 Windows Сервисный шаблон. Недавно я написал 3 небольших сервиса, которые обновляют таблицы базы данных из других источников данных. Один из них - LDAP, а другой - файл Excel, доступный на SFTP-сервере.

В зависимости от вашего варианта использования, я бы рекомендовал использовать подключение к серверу SQL с использованием класса SqlConnection и получить доступ к документу. оттуда или получить доступ к документу с помощью SFTP (сервер базы данных или нет). Есть несколько библиотек для SFTP для. Net Core и множество интерактивных руководств.

В любом случае вы бы использовали предпочтительное подключение для локальной загрузки файла, так как скорее всего это какой-то поток данных. После локальной загрузки на сервер вы можете использовать SFTP для отправки файла в любую точку сети.

Вопрос. Почему вы загружаете файл docx с сервера «База данных»? Является ли файл docx "живущим" на сервере, на котором также размещаются базы данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...