Loading...

All project content is available for reading, but you need to be a member of the project for Subversion checkout of source code, or to create/modify any information.
Login if you are a member. Apply here to request membership (open to all).

Database File System

This library contains a custom file system for EPiServer where files and directories are stored in a Microsoft SQL Server 2005, 2008 or 2012 database.

For enterprise solutions, this means that you do not have to synchronize files between servers in a web farm.

Features (VPP version)

  • Supports standard VPP security
  • Supports several file systems in the same database
  • Supports meta data on files
  • Supports permanent links (move files without breaking links or images)
  • Works with WebDAV
  • Uses caching for improved performance
  • Can replace existing file systems (using built-in conversion tool)
  • Can be used for PageFiles as well
  • Perfect for team development and load balanced environments

Note:

  • Searching files in edit mode is not supported (use EasySearch it you need that)
  • Versioning of files is not supported
  • Virus scanning is tricky as the file content is stored in the database. You need to trust the anti virus client on the editor's machine

Download

EPiServer 7.5

Note! For EPiServer 7.5, and the new Media system, this is a completely new component, and not a VPP anymore, but a Database Blob Provider. The concept is the same though. It also works for EPiServer Commerce sites, where product images can be stored in the database.

Download and install the nuget package from http://nuget.episerver.com. For more information, see this blog on EPiServer World

Git repository: https://www.coderesort.com/git/epicode/EPiCode.SqlBlobProvider
Browse source: EPiCode.SqlBlobProvider

EPiServer 7

For EPiServer CMS 7 and CMS 7.1 you need to compile the source from the Subversion repository.

EPiServer 6 and older

down.gif Download the module installer (packaged for CMS 6 R2), and use EPiServer Deployment Center to install. The source also contain a version for CMS 5.

Note! The source code might contain fixes that have not been packaged into the module installer yet.

If you want to work with the source code, check out the source with TortoiseSVN:

You need to add the following projects to your solution:

  • EPiCode.DatabaseVirtualPathProvider
  • EPiCode.DatabaseVirtualPathProvider.FileSystemTools
    if you want to import existing file systems to the database

The projects use the PostBuildEvent to copy run-time files to the web solution. You might want to take advantage of that when you develop.

You can also:

Installation and Configuration

EPiServer CMS 7.5

Install the nuget package. See the readme for more information.

EPiServer CMS 7.1 and older

If you want to convert an existing file system, follow the steps below. If you only want to add a new database VPP, skip step 3 (do remember to add a <location name="..." > in your web.config file too).

  1. Install the module using EPiServer Deployment Center.
  2. Run the SqlScripts.sql file (located in /EPiCode/DatabaseFileSystem folder in your solution) using SQL Server Management Studio, on your EPiServer database.
    This creates the tables to store the file content and directory structure. You can optionally separate the file system tables from the EPiServer CMS tables by creating a new database and run the script there. You will need to add a new connection string for this database.
  3. Under the Tools menu in admin mode, select "Virtual Filesystem Tools". Under "Convert File System" select file system to convert (source) and database connectionstring name, before hitting the 'Convert' button.
    Adding screenshot of convert pages
    Repeat this process for all the file systems you want to convert.
  4. Do necessary configuration changes in your episerver.config for all converted file systems:

Before:

<add showInFileManager="true"
             virtualName="Global Files"
             virtualPath="~/Global/"
             bypassAccessCheck="false"
             indexingServiceCatalog="Web"
             physicalPath="C:\EPiServer\VPP\MyEPiserver\Global"
             name="SiteGlobalFiles"
             type="EPiServer.Web.Hosting.VirtualPathVersioningProvider,EPiServer" />

After:

<add showInFileManager="true"
             virtualName="Global Files"
             virtualPath="~/Global/"
             bypassAccessCheck="false"
             name="SiteGlobalFiles"
             connectionStringName="EPiServerDB"
             type="EPiCode.DatabaseVirtualPathProvider.VirtualPathDatabaseProvider, EPiCode.DatabaseVirtualPathProvider" />

Note! You can add more than one VPP to the same database (like Global and Page Files), the Database VPP is not restricted to one file system per database..

Requirements

  • EPiServer CMS 5 R2 SP2 / CMS 6 R2 / CMS 7.1 / CMS 7.5
    • not tested against earlier CMS 5 versions, but feel free to try it. (Recompilation is necessary.)
  • SQL Server 2005, 2008 or 2012
  • Visual Studio .NET 2013 if you want to compile the 7.x and 7.5 source
  • Visual Studio .NET 2010 if you want to compile the 5.x and 6.x source

Contributed By

This module was originally developed by Einar Krokan. It has been migrated to CMS 5 by Propeople and is currently being maintained by BV Network AS.

Support

This code is unsupported, use at your own risk. Use the ticket system if you have questions.

Attachments