Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
AI OnAI Off
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Hi,
This is the code we're using to export assets:
<%@ Page Language="C#" AutoEventWireup="true" Inherits="System.Web.UI.Page" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="EPiServer" %> <%@ Import Namespace="EPiServer.Core" %> <%@ Import Namespace="EPiServer.Core.Transfer" %> <%@ Import Namespace="EPiServer.DataAbstraction" %> <%@ Import Namespace="EPiServer.DataAccess" %> <%@ Import Namespace="EPiServer.Enterprise" %> <%@ Import Namespace="EPiServer.Implementation" %> <%@ Import Namespace="EPiServer.ServiceLocation" %> <%@ Import Namespace="EPiServer.Personalization.VisitorGroups" %> <%@ Import Namespace="EPiServer.Framework.Cache" %> <%@ Import Namespace="EPiServer.Framework.Blobs" %> <script runat="server"> private Injected<ITabDefinitionRepository> _tabDefinitionRepository; private Injected<IPropertyDefinitionRepository> _propertyDefinitionRepository; private Injected<ContentListDB> _contentListDB; private static IContentRepository _contentRepository = ServiceLocator.Current.GetInstance<IContentRepository>(); private static DecoratedClassFactory CreateClassFactory(string type, string id) { Type concreteType = Type.GetType(type, true); return Activator.CreateInstance(concreteType, new Object[] { id }) as DecoratedClassFactory; } private static void WriteError(System.Web.HttpResponse response, string errorMessage) { response.Clear(); response.Write("<span style=\"color: red;\">Error: " + errorMessage + "</span><br />"); response.End(); } private void Page_Load(object sender, System.EventArgs e) { DataExporter exporter = new DataExporter(); //Get all page references and data List<PageReference> startPageReferenceList = new List<PageReference>(); List<ContentData> startPageDataList = new List<ContentData>(); ContentFolder rootFolder = _contentRepository.GetChildren<ContentFolder>(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(Category.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 + "<br>"); } } 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=CatalogAssets.episerverdata"); exporter.Stream.Close(); Response.WriteFile(file); } Response.End(); } </script>
You might need to change it a bit, such as the root folder.
Regards,
/Q
Hello!
Is there any way to export all assets in a media folder?
The current migration tool only lets me export assets references by pages, or stand-alone assets if I select them one by one, which takes forever since there are like 500 assets.
Thanks!