2012-01-23 5 views
5

これは私が試したことであり、うまくいかないようです。私はエラーはありませんが、ファイルをメディアライブラリに追加するようなことはありません。ASP FileUploadコントロールを使用してコードを使ってファイルをSitecoreメディアライブラリにアップロードするにはどうすればよいですか?

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番目に「FileName」と書かれています。これは何であるはずですか? Streamから作成する場合、なぜSitecoreにFileNameを伝える必要がありますか?

ご協力いただければ幸いです。

答えて

4

あなたの問題は、あなたがSitecore API呼び出しに適切なオプションを使用していないことだと思います。あなたは本当の宛先を持っていません。これはあなたのアイテムになるSitecoreアイテムを指定する場所です。単にフォルダではありません。あなたはメディアライブラリアイテムを作成しようとしているようです。 SDNのコンテンツAPI帳パー

:APIの

を使用してメディア・アイテムを作成する方法

あなたは作成するSitecore.Resources.Media.MediaCreatorと Sitecore.Resources.Media.MediaCreatorOptionsクラスを使用することができますファイルからのメディアアイテム。例えば 、メディアアイテムを作成するために/サイトコア/メディアライブラリファイルCから masterデータベースに/画像/サンプル:\一時\のsample.jpg:

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) 
2

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

MediaCreatorOptionsの[Destination]プロパティは何ですか?

@divamatrixが指摘したように、あなたのMediaItemは、サイトコアメディアライブラリ(例:/サイトコア/メディアライブラリ/画像/作成されたイメージ)

に住みたい場所、 MediaCreatorOptionsDestinationプロパティがあります

これは単なるフォルダであると思われますか?それはまた、項目名を持つことになっていますか?

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

CreateFromStreamメソッドの3つのパラメータは何ですか?最初のものはストリームのようです - 私はそれを取得します。しかし、2番目に「FileName」と書かれています。これは何であるはずですか? Streamから作成する場合、なぜSitecoreにFileNameを伝える必要がありますか?あなたはMediaCreatorOptionsDestinationを設定する場合はnullまたは空でない場合GetItemPath方法はただoptions.Destinationを返しますので、

ファイル名は無視されます。 Destinationを設定しないと、GetItemPathメソッドは、メディアライブラリに適切なパスを与えることをお勧めします。本質的には、CreateFromStreamを使用している場合は、DestinationMediaCreatorOptionsに設定するか、filePathをアイテムにしたい場所に設定してください。GetItemPathメソッドはそれを入れようとしますが、例外をスローする可能性があります。それはできません。

関連する問題