Son Do
Jul 20, 2015
  4671
(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

Please login to comment.
Latest blogs
Introducing AI Assistant v4 for Optimizely CMS 12 and 13

Epicweb AI Assistant v4.0 adds full support for Optimizely CMS 13 on .NET 10 while staying compatible with CMS 12 on .NET 8, plus new AI Chat tools...

Luc Gosso (MVP) | Apr 20, 2026 |

Remote Debugging in Optimizely DXP: What Is Actually Possible?

Introduction At SYZYGY Techsolutions , we support Optimizely DXP projects at scale, so continuously  identifying  the right tools and approaches fo...

Mike | Apr 20, 2026

Removing Unused Properties in Optimizely CMS 13

Learn how to remove orphaned property definitions in Optimizely CMS 13. Explore API updates for IContentTypeRepository and how to safely use...

Stuart | Apr 17, 2026 |

How to Remove the "Paste formatting options" Dialog in Optimizely CMS 12

If you've upgraded from an older Optimizely CMS solution lately, you may have noticed a dialog popping up every time an editor pastes content from...

Henning Sjørbotten | Apr 17, 2026 |