Как получить файлы из заархивированной папки, а также кодировать и сохранить их в базе данных без извлечения файлов? - PullRequest
0 голосов
/ 07 мая 2019

Сервер имеет почти 50 ГБ сжатых файлов.Мне нужен лучший подход для извлечения файлов из этой zip-папки, а база 64 закодирует их и сохранит их в базе данных как BLOB-объекты.Я хотел бы не распаковывать всю заархивированную папку, если это возможно.Пожалуйста, ведите меня.

1 Ответ

1 голос
/ 07 мая 2019

Попробуйте следующее:

using System;
using System.IO;
using System.IO.Compression;
using System.Threading.Tasks;

namespace zipStream
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            var file = File.OpenRead(@"YOUR-REMOTE-FILE-NAME");
            ZipArchive ar = new ZipArchive(file, ZipArchiveMode.Read);
            foreach (ZipArchiveEntry entry in ar.Entries)
            {
                using (Stream stream = entry.Open())
                {
                    try
                    {
                        Byte[] inArray = new Byte[(int)entry.Length];
                        Char[] outArray = new Char[(int)((entry.Length + 10) * 2)];
                        stream.Read(inArray, 0, (int)entry.Length);
                        Convert.ToBase64CharArray(inArray, 0, inArray.Length, outArray, 0);
                        Console.WriteLine($"Processed {entry.Name}");
                    }
                    catch (Exception e)
                    {
                        var msg = e.Message;
                        Console.WriteLine($"Failed to process {entry.Name}");
                        System.Diagnostics.Debugger.Break();
                    }
                }
                // at this point you have your file content in outArray variable
                // you can find some guidance on writing blobs to a db here:
                // https://www.c-sharpcorner.com/uploadfile/Ashush/working-with-binary-large-objects-blobs/
            }

        }

    }
}

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