Создать ZIP-файл из столбца SQL Server Varbinary - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь загрузить несколько файлов с помощью zipArchive из базы данных SQL Server с помощью консольного приложения.Этот следующий код создает пустой файл.Он извлекает контент и добавляет в MemoryStream.

SqlCommand myCommand;
SqlDataReader reader = null;

using (SqlConnection myConnection = new SqlConnection(connectionString))
{
    string SQL = "select doc_name, doc_content from Documents where id = 200";
    myConnection.Open();
    myCommand = new SqlCommand(SQL.ToString(), myConnection);
    reader = myCommand.ExecuteReader();
    byte[] zipBytes = null;


    using (var compressedFileStream = new MemoryStream())

    using (var zipArchive = new ZipArchive(compressedFileStream, ZipArchiveMode.Update, false))
    {
        while (reader.Read())
        {
            //Create a zip entry for each attachment
            var zipEntry = zipArchive.CreateEntry(reader["doc_name"].ToString());

            //Get the stream of the attachment
            using (var originalFileStream = new MemoryStream((byte[])reader["doc_content"]))
            using (var zipEntryStream = zipEntry.Open())
            {
                //Copy the attachment stream to the zip entry stream
                originalFileStream.CopyTo(zipEntryStream);
            }
        }

        using (var fileStream = new FileStream(@"C:\test\test.zip", FileMode.Create))
        {
            compressedFileStream.Seek(0, SeekOrigin.Begin);
            compressedFileStream.CopyTo(fileStream);
        }
    }
 }
...