如何使用ASP FileUpload控件在代码中将文件上载到Sitecore媒体库?

Cor*_*ett 5 sitecore sitecore6 sitecore-media-library

这是我尝试过的,似乎没有用.我没有收到任何错误,但它似乎也没有将文件添加到媒体库.

using(new Sitecore.SecurityModel.SecurityDisabler())
{
  if(myFileControl.HasFile)
  {
    MediaCreatorOptions _options = new MediaCreatorOptions();
    _options.Database = Factory.GetDatabase("master");
    _options.FileBased = false;
    _options.IncludeExtensionInItemName = false;
    _options.KeepExisting = false;
    _options.Versioned = false;
    _options.Destination = "/sitecore/media library";
    MediaItem _newFile = MediaManager.Creator.CreateFromStream(myFileControl.FileContent, myFileControl.FileName, _options);
  }
}
Run Code Online (Sandbox Code Playgroud)

我最大的问题是我并不真正了解一些不同的参数和属性.MediaCreatorOptions的"目的地"属性是什么?它应该只是一个文件夹吗?它应该也有项目名称吗?CreateFromStream方法的三个参数是什么?第一个似乎是流 - 我明白了.但第二个是"FileName".这应该是什么?如果我是从Stream创建的,为什么我需要告诉Sitecore FileName?

任何帮助,将不胜感激.

div*_*rix 4

我认为您的问题是您没有为 Sitecore API 调用使用正确的选项。您没有真正的目的地..您可以在其中指定将成为您的项目的Sitecore项目...而不仅仅是一个文件夹。您似乎正在尝试创建媒体库项目。

根据 SDN 上的内容 API 书籍:

如何使用 API 创建媒体项目

您可以使用 Sitecore.Resources.Media.MediaCreator 和 Sitecore.Resources.Media.MediaCreatorOptions 类从文件创建媒体项目。例如,要从文件 C:\temp\sample.jpg 在 Master 数据库中创建媒体项 /Sitecore/Media Library/Images/Sample:

Sitecore.Resources.Media.MediaCreatorOptions options =  new Sitecore.Resources.Media.MediaCreatorOptions();
options.Database = Sitecore.Configuration.Factory.GetDatabase("master");
options.Language = Sitecore.Globalization.Language.Parse(Sitecore.Configuration.Settings.DefaultLanguage);
options.Versioned = Sitecore.Configuration.Settings.Media.UploadAsVersionableByDefault;
options.Destination = "/sitecore/media library/images/Sample";
options.FileBased = Sitecore.Configuration.Settings.Media.UploadAsFiles;
Sitecore.Resources.Media.MediaCreator creator = new Sitecore.Resources.Media.MediaCreator();
Sitecore.Data.Items.MediaItem sample = creator.CreateFromFile(@"C:\temp\sample.jpg",options)
Run Code Online (Sandbox Code Playgroud)