November Happy Hour will be moved to Thursday December 5th.

Jonas Lindau
Mar 28, 2013
  3199
(0 votes)

Hiding files with attribute hidden, system or temporary from file listing

On our sites we use pretty much the same file listing functions that comes with the example site in EPiServer. It’s simple and have worked well for many years, but recently one of our users realized that hidden files were visible in the listing. My first thought was that it should be the easiest thing ever to hide these files, surely the FileSystemDataSource would have a nice property called “ShowHiddenFiles” or something, ready use. It turned out i couldn’t be more wrong!

so what to do? After testing and thinking of several ways to solve my issue, I ended up with a quite simple solution where I used TreeNodeDataBound to determine if the current node should be rendered or not. In the sample unit this method is used to add different functionality for files and directories. Just add a few more lines of code to it like below:

protected void FileTree_TreeNodeDataBound(object sender, System.Web.UI.WebControls.TreeNodeEventArgs e)
        {
            VirtualFileBase virtualFile = e.Node.DataItem as VirtualFileBase;
           
            if (virtualFile.IsDirectory)
            {
                e.Node.SelectAction = TreeNodeSelectAction.Expand;
            }
            else
            {
                try
                {
                    VersioningFile RealFile = VirtualPathHandler.Instance.GetFile(virtualFile.VirtualPath, true) as VersioningFile;
                    string RealPath = RealFile.LocalPath;
                    FileInfo RealFileInfo = new FileInfo(RealPath);

                    if (RealFileInfo.Exists)
                    {
                        bool IsHidden = (RealFileInfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden;
                        bool IsSystem = (RealFileInfo.Attributes & FileAttributes.System) == FileAttributes.System;
                        bool IsTemporary = (RealFileInfo.Attributes & FileAttributes.Temporary) == FileAttributes.Temporary;

                        if (IsHidden || IsSystem || IsTemporary)
                            FileTree.Nodes.Remove(e.Node);
                    }
                }
                catch { }

                e.Node.NavigateUrl = e.Node.DataPath;
            }
        }

Now it’s safe to list files from folders where hidden, system or temporary files are sored!

Mar 28, 2013

Comments

Please login to comment.
Latest blogs
Optimizely SaaS CMS + Coveo Search Page

Short on time but need a listing feature with filters, pagination, and sorting? Create a fully functional Coveo-powered search page driven by data...

Damian Smutek | Nov 21, 2024 | Syndicated blog

Optimizely SaaS CMS DAM Picker (Interim)

Simplify your Optimizely SaaS CMS workflow with the Interim DAM Picker Chrome extension. Seamlessly integrate your DAM system, streamlining asset...

Andy Blyth | Nov 21, 2024 | Syndicated blog

Optimizely CMS Roadmap

Explore Optimizely CMS's latest roadmap, packed with developer-focused updates. From SaaS speed to Visual Builder enhancements, developer tooling...

Andy Blyth | Nov 21, 2024 | Syndicated blog

Set Default Culture in Optimizely CMS 12

Take control over culture-specific operations like date and time formatting.

Tomas Hensrud Gulla | Nov 15, 2024 | Syndicated blog