Esempio n. 1
0
 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));
         }
     }
 }
Esempio n. 2
0
        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);
        }