Son Do
Jul 20, 2015
visibility 4997
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
Composition Over Inheritance: Why Your Content Contract Is Not a Base Class

Inside the structural conformance pattern in SaaS CMS — from server-side inheritance to pipeline governance. A contract in Optimizely SaaS CMS is...

Vipin Banka | Sep 19, 2026

Optimizely Opti ID Integration: Why the API Key Was Missing from the DXP Management Portal

While working on an Optimizely CMS 12 Opti ID integration recently, we ran into an issue that initially appeared to be related to SSO authenticatio...

Madhu | Sep 18, 2026 |

Extending a Contract: What You Can Override

Contracts share fields across content types — but not every field setting can be overridden. Push the same contract onto several components, and CM...

Chirag Khanna | Sep 18, 2026 |

Building a Blazor Server UI Inside the Optimizely CMS 13 Admin Shell

What I learned shipping a Blazor Server UI inside Optimizely CMS 13 — Razor components in a NuGet package, the Blazor hub next to MapContent(),...

Stanisław Szołkowski | Sep 17, 2026 |