Son Do
Jul 20, 2015
visibility 5062
star star star star star
(0 votes)

Exporting media content using DataExporter

I want to export CMS media file and I found that using EPiServer.Enterprise.DataExporter make sense.

In project, create new page with code behind below:

public partial class ExportMedia : System.Web.UI.Page
    {
        private static Injected _tabDefinitionRepository;
        private static Injected _propertyDefinitionRepository;
        private static Injected _contentRepository ;
        private static Injected _categoryRepository;

        protected void Page_Load(object sender, EventArgs e)
        {
            DataExporter exporter = new DataExporter();

            //Get all page references and data
            List startPageReferenceList = new List();
            List startPageDataList = new List();
            ContentFolder rootFolder = _contentRepository.Service.GetChildren(EPiServer.Web.SiteDefinition.Current.GlobalAssetsRoot).FirstOrDefault() as ContentFolder;

            exporter.Frames.AddRange(Frame.List());
            exporter.TabDefinitions.AddRange(_tabDefinitionRepository.Service.List());
            foreach (var propertyDefinition in _propertyDefinitionRepository.Service.ListDynamic())
            {
                exporter.DynamicPropertyDefinitions.Add(propertyDefinition);
            }

            exporter.Categories.AddRange(_categoryRepository.Service.GetRoot().Categories);

            //Set rootFolder to exporter
            ExportSource sourceRoot = new ExportSource(rootFolder.ContentLink, EPiServer.Core.Transfer.ExportSource.RecursiveLevelInfinity);
            exporter.SourceRoots.Add(sourceRoot);

            //property settings
            exporter.ExportPropertySettings = true;
            exporter.IncludeImplicitContentDependencies = true;

            if (Request.QueryString["debug"] != null)
            {
                Response.Clear();
                exporter.Stream = new MemoryStream();
                exporter.Export();
                if (exporter.Log.Errors.Count > 0)
                {
                    foreach (string s in exporter.Log.Errors)
                    {
                        Response.Write(s + "; ");
                    }
                }
                else
                {
                    Response.Write("OK");
                }
            }
            else
            {
                Response.Clear();
                string file = Path.GetTempFileName();
                exporter.Stream = new FileStream(file, FileMode.OpenOrCreate, FileAccess.Write | FileAccess.Read, FileShare.Read);
                exporter.Export();
                exporter.Close();
                if (exporter.Log.Errors.Count > 0)
                {
                    throw new Exception("errors occured,try &debug=true");
                }
                Response.ContentType = "binary/octet-stream";
                Response.AddHeader("Content-disposition", "attachment; filename=MediaContent.episerverdata");
                exporter.Stream.Close();
                Response.WriteFile(file);
            }
            Response.End();
        }
    }

Navigate to this page in browser, we will get export file. And we can use this file to import media content.

Jul 20, 2015

Comments

May 15, 2017 05:10 PM

error Please login to comment.
Latest blogs
Building UI Extensions for Optimizely SaaS CMS

Introduction Developers have been extending the functionality of Optimizely PaaS CMS for years using addons built in C# and deployed as NuGet...

Mark Stott | Oct 15, 2026

Cheapskate AI Translator: Because Translation Should Not Require a Second Mortgage

There is a particular kind of software project that begins with a detailed architecture document, a product roadmap, and a carefully assembled...

Linh Doan Cuu | Oct 15, 2026

Computed Fields in CMS 13 Content Contracts with Optimizely Graph

Content Contracts in Optimizely CMS 13 allow different content types to share a common structure when querying Optimizely Graph. But what if the...

Mardy | Oct 14, 2026

Opal Workflow Agents And The Graph Webhook Trap

What we did? We built a compliance review workflow agent in Opal. The job was simple: when an editor submits a page for review in Optimizely CMS 13...

Ritu Madan | Oct 14, 2026