Как распаковать файлы и папки из строковых 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
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.