istudent Ответов: 1

Как распаковать файлы и папки из строковых zip-файлов base64 из базы данных?


У меня есть zip-файлы, сохраненные в базе данных в виде строки base64.
Я могу извлекать файлы из этих строк base64 zip, но я не мог извлечь папки и файлы внутри папок.

Пожалуйста, также позвольте улучшить код, если есть лучший способ достичь этого.

Внизу - мой код.

Что я уже пробовал:

byte[] dataFromBlob = item.BlobData;

                        using (MemoryStream ms = new MemoryStream(dataFromBlob))
                        {
                            using (ZipArchive zipArchive = new ZipArchive(ms))
                            {
                                foreach (var entry in zipArchive.Entries)
                                {
                                    using (var ims = new MemoryStream())
                                    {
                                        if (!entry.FullName.Contains("."))
                                        {
                                           string entryfullname = entry.FullName.Substring(0, entry.FullName.Length - 1);
                                            //entry.Open().CopyTo(ims);
                                            //File.WriteAllBytes(filePath + entryfullname, ims.GetBuffer());
											
											I do not know how do I read files from inside this entryfullname which is a folder and inside the folder there are files. 
                                        }
                                        else
                                        {
                                            entry.Open().CopyTo(ims);
                                            File.WriteAllBytes(filePath + entry.FullName, ims.GetBuffer());
                                        }
                                       
                                    }

                                }
                            }

istudent

вот как я это сделал. Но я думаю, что решение может быть подвержено ошибкам.
еще если (запись.Полное имя.Содержит("/") && запись.Полное имя.Содержит("."))
{
var subdir = запись.FullName.Substring(0, entry.Полное имя.LastIndexOf("/"));

ВАР ФП = путь_к_файлу + подкаталоге + "\\";
Каталог.CreateDirectory(fp);

entryName = вход.FullName.Substring(запись.Полное имя.LastIndexOf("/") + 1);

вход.Открыть().Метод CopyTo(ИМС);
Файл.WriteAllBytes(fp + entryName, ims.GetBuffer());
}

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

1 Ответов

Рейтинг:
2