public byte[] Package(string pathToFolder, IEnumerable <VirtualFileWrapper> inFolderFiles) { // pack the things from the form into zip file string tmpZipFile = Path.GetTempFileName(); using (var zipFile = new ZipFile()) { var directoryInfo = new DirectoryInfo(pathToFolder); // get all files from this directory into zip archive foreach (FileInfo fileInfo in directoryInfo.GetFiles()) { // find this file in in folderFiles FileInfo info = fileInfo; VirtualFileWrapper item = inFolderFiles .Where(x => x.FileName.Equals(info) && x.ToPackage == false) .DefaultIfEmpty(null) .SingleOrDefault(); if (item != null) { continue; } zipFile.AddFile(fileInfo.FullName, "."); } zipFile.Save(tmpZipFile); } byte[] data = File.ReadAllBytes(tmpZipFile); File.Delete(tmpZipFile); return(data); }
/// <summary> /// Returns either an IVirtualFile instance or a VirtualFile instance. /// </summary> /// <param name="virtualPath"></param> /// <param name="queryString"></param> /// <returns></returns> public IVirtualFile GetFile(string virtualPath, NameValueCollection queryString) { IVirtualFile f = null; foreach (IVirtualImageProvider p in c.Plugins.VirtualProviderPlugins) { if (p.FileExists(virtualPath, queryString)) { f = p.GetFile(virtualPath, queryString); break; } } if (f == null && HostingEnvironment.VirtualPathProvider != null && HostingEnvironment.VirtualPathProvider.FileExists(virtualPath)) { var vf = HostingEnvironment.VirtualPathProvider.GetFile(virtualPath); if (vf is IVirtualFile) { f = (IVirtualFile)vf; } else { f = new VirtualFileWrapper(vf); } } if (f == null) { return(null); } //Now we have a reference to the real virtual file, let's see if it is source-cached. try { IVirtualFile cached = null; foreach (IVirtualFileCache p in c.Plugins.GetAll <IVirtualFileCache>()) { cached = p.GetFileIfCached(virtualPath, queryString, f); if (cached != null) { return(cached); } } } catch (FileNotFoundException) { //IVirtualFileCache instances will .Open() and read the original IVirtualFile instance. //We must abstract the differences in thrown exception as much as possible. Start with FileNotFound & DirectoryNotFound return(null); } catch (DirectoryNotFoundException) { return(null); } return(f); }
/// <summary> /// Returns either an IVirtualFile instance or a VirtualFile instance. /// </summary> /// <param name="virtualPath"></param> /// <param name="queryString"></param> /// <returns></returns> public IVirtualFile GetFile(string virtualPath, NameValueCollection queryString) { IVirtualFile f = null; foreach (IVirtualImageProvider p in c.Plugins.VirtualProviderPlugins) { if (p.FileExists(virtualPath, queryString)) { f = p.GetFile(virtualPath, queryString); break; } } if (f == null && HostingEnvironment.VirtualPathProvider != null && HostingEnvironment.VirtualPathProvider.FileExists(virtualPath)) { var vf = HostingEnvironment.VirtualPathProvider.GetFile(virtualPath); if (vf is IVirtualFile) { f = (IVirtualFile)vf; } else { f = new VirtualFileWrapper(vf); } } if (f == null) { return(null); } //Now we have a reference to the real virtual file, let's see if it is source-cached. IVirtualFile cached = null; foreach (IVirtualFileCache p in c.Plugins.GetAll <IVirtualFileCache>()) { cached = p.GetFileIfCached(virtualPath, queryString, f); if (cached != null) { return(cached); } } return(f); }