November Happy Hour will be moved to Thursday December 5th.
AI OnAI Off
November Happy Hour will be moved to Thursday December 5th.
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!