private string openZipEntry( string fileName, ZipLib.Zip.ZipFile zip, ZipLib.Zip.ZipEntry entry, string source) { using (Stream s = zip.GetInputStream(entry)) { byte[] data = new byte[entry.Size]; s.Read(data, 0, data.Length); using (MemoryStream ms = new MemoryStream(data)) { if (intCheckCanOpenFileName(entry.Name)) { openStream(ms, Path.GetExtension(entry.Name).ToUpper(), source, true); } else { Locator.Resolve <IUserMessage>().Error( "Can't open {0}\\{1}!\n\nFile not supported!", fileName, entry.Name); return(string.Empty); } return(string.Format("{0}/{1}", Path.GetFileName(fileName), entry.Name)); } } }
public string OpenFileName(string fileName, bool wp) { string ext = Path.GetExtension(fileName).ToUpper(); if (ext != ".ZIP") { using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) openStream(stream, ext, fileName, wp); return(Path.GetFileName(fileName)); } else { List <ZipLib.Zip.ZipEntry> list = new List <ZipLib.Zip.ZipEntry>(); using (ZipLib.Zip.ZipFile zip = new ZipLib.Zip.ZipFile(fileName)) { foreach (ZipLib.Zip.ZipEntry entry in zip) { if (entry.IsFile && entry.CanDecompress && Path.GetExtension(entry.Name).ToUpper() != ".ZIP" && CheckCanOpenFileName(entry.Name)) { //return openZipEntry(fileName, zip, entry); list.Add(entry); } } ZipLib.Zip.ZipEntry selEntry = null; if (list.Count == 1) { selEntry = list[0]; } else if (list.Count > 1) { var service = Locator.Resolve <IUserQuery>(); if (service != null) { selEntry = (ZipLib.Zip.ZipEntry)service.ObjectSelector( list.ToArray(), Path.GetFileName(fileName)); } else { selEntry = list.Count > 0 ? list[0] : null; } if (selEntry == null) { return(string.Empty); } } if (selEntry != null) { var result = openZipEntry(fileName, zip, selEntry, fileName); if (!string.IsNullOrEmpty(result)) { return(result); } } } } Locator.Resolve <IUserMessage>().Error( "Can't open {0}!\n\nSupported file not found!", fileName); return(string.Empty); }