5

これが私が試したもので、うまくいかないようです。エラーは発生しませんが、ファイルがメディア ライブラリに追加されていないようです。

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);
  }
}

私の最大の問題は、さまざまなパラメーターとプロパティのいくつかが何をするのかを本当に理解していないことです。MediaCreatorOptions の「Destination」プロパティとは何ですか? それは単なるフォルダであるはずですか?アイテム名もあるはずですか?CreateFromStream メソッドの 3 つのパラメーターは何ですか? 最初のものはストリームのようです-わかりました。しかし、2番目は「ファイル名」と言っていました。これは何ですか?ストリームから作成している場合、Sitecore に FileName を伝える必要があるのはなぜですか?

どんな助けでも大歓迎です。

4

2 に答える 2

4

ここでの問題は、Sitecore API 呼び出しに適切なオプションを使用していないことだと思います。実際の宛先はありません..これは、フォルダーだけでなく、アイテムになる Sitecore アイテムを指定する場所です。メディア ライブラリ アイテムを作成しようとしているようです。

SDN の Content API Book によると:

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)
于 2012-02-09T00:27:36.943 に答える
2

Corey さん、これが今でも関係があるかどうかはわかりませんが、あなたとまったく同じ質問に出くわしました。@divamatrix はストリームの質問に実際には答えていませんでした。他の誰か (または私自身) が答えを必要とする場合に備えて、この質問に記入したいと思います。

MediaCreatorOptions の「Destination」プロパティとは何ですか?

@divamatrix が指摘したように、Destinationプロパティ inMediaCreatorOptionsは、MediaItem を Sitecore メディア ライブラリに配置する場所です (例: /sitecore/Media Library/Images/Created Image)。

それは単なるフォルダであるべきですか?アイテム名もあるはずですか?

いいえ、現在メディア ライブラリにあるフォルダーの名前であってはなりません。作成したいアイテムの名前を含む、作成したいアイテムのパスである必要があります (上記を参照)。

CreateFromStream メソッドの 3 つのパラメーターは何ですか? 最初のものはストリームのようです-わかりました。しかし、2番目は「ファイル名」と言っていました。これは何ですか?ストリームから作成している場合、Sitecore に FileName を伝える必要があるのはなぜですか?

null または空でない場合はメソッドが返されるため、Destinationを とともに設定すると、ファイル名は無視されます。を設定しない場合、メソッドは、メディア ライブラリ内の適切なパスを提供することを最善の方法として試みます。本質的に、CreateFromStreamを使用する場合(私が知る限り)、inを設定するか、アイテムを配置したい場所に設定すると、メソッドはそこに配置しようとしますが、できない場合は例外をスローする可能性があります.MediaCreatorOptionsGetItemPathoptions.DestinationDestinationGetItemPathDestinationMediaCreatorOptionsfilePathGetItemPath

于 2012-07-09T14:21:04.723 に答える