2015-02-04 2 views
2

Я пробовал этот код, но не работал с помощью Statement.Как загрузить изображения медиабиблиотеки из sitecore в локальную папку

var database = Sitecore.Configuration.Factory.GetDatabase("master"); 
var images = database.SelectItems("/sitecore/media library/Corsair/Home Page/*"); 
foreach (var image in images) 
    { 
     var mediaItem = (MediaItem)image; 
     var media = MediaManager.GetMedia(mediaItem); 
     var stream = media.GetStream(); 
     using (var targetStream = File.OpenWrite(Path.Combine(@"F:\folder", image.Name + ".jpeg"))) 
     { 
      stream.CopyTo(targetStream); 
      targetStream.Flush(); 
     } 
    } 
+0

Что вы имеете в виду под «не работает»? Любое исключение? –

+0

Он не работает из «Использование» Statement ... мы не можем просмотреть ошибки в sitecore .. –

+1

Ничего в файлах журналов? Откуда вы знаете, что он не работает от «использования»? Выполняется ли пользователь, который работает в IIS, имеет права на запись в папку «f: \»? –

ответ

0

Это пример, который работает для меня:

//button to trigger event on front end 
<asp:Button ID="myButton" Text="Export Images" OnClick="ExportMedia" runat="server" /> 

в код

using System; 
using System.IO; 
using Sitecore.Data; 
using Sitecore.Data.Items; 
using Sitecore.Resources.Media; 

namespace YourNamespace 
{ 
public partial class MediaLibraryExporter : System.Web.UI.Page 
{ 
    public void ExportMedia(object sender, EventArgs e) 
    { 
     var database = Database.GetDatabase("master"); 
     var images = database.SelectItems("/sitecore/media library/Images/Branches/descendant::*[@@templatekey='jpeg']"); 

     foreach (var image in images) 
     { 
      var mediaItem = (MediaItem)image; 
      var media = MediaManager.GetMedia(mediaItem); 
      var stream = media.GetStream(); 

      using (var targetStream = File.OpenWrite(Path.Combine("Your output folder location", image.Name + ".jpeg"))) 
      { 
       stream.CopyTo(targetStream); 
       targetStream.Flush(); 
      } 
     } 
    } 

} 

}

0

Ответ от Гуся работает довольно хорошо, но если у вас есть много изображений (200+) в папке, вам нужно будет использовать Sitecore Fast Query.

Просто добавьте «быстро:» в начале запроса SelectItems так, что линия заканчивается выглядеть так:

var images = database.SelectItems("fast:/sitecore/media library/Images/Branches/descendant::*[@@templatekey='jpeg']"); 
Смежные вопросы